[erledigt] ^String in Datei speichern - Umlaute weg



  • Ich will einige .Net-Strings in eine Textdatei speichern, was im Grunde auch funktioniert, nur leider werden die Umlaute nicht richtig übernommen:

    "...für..." statt "...für..."

    try
    {
        StreamWriter ^datei = gcnew StreamWriter("FehlerListe.xls");
        DataRow ^Zeile;
        DataTable ^FehlerTabelle = dataSet2->Tables["Fehler"];
        for (int Index=0; Index< dataSet2->Tables["Fehler"]->Rows->Count; Index++)
        {
            Zeile = FehlerTabelle->Rows[Index];
            if (Convert::ToString(Zeile["isModified"]) != Convert::ToString("Datensatz geaendert"))
            {
                datei->WriteLine(Zeile["Tabelle"] + "\t" + Zeile["Symbol"] + "\t" + Zeile["Deutsch"];
            }
        }
        datei->Close();
    }
    catch (Exception ^e)
    {
        MessageBox::Show(e->Message, "Fehler beim erzeugen der Fehlerdatei");
    }
    

    Ich habe im Netz einiges für C# gefunden, die Ansätze haben mir bei Visual Studio Express und C++ aber leider nicht geholfen.
    Über einen hilfreichen Tipp wäre ich sehr froh. Danke im Voraus.



  • Korhil schrieb:

    "...für..." statt "...für..."

    Er wird das im UTF8 speichern. Und Du betrachtest das mit einem Editor der kein Unicode kann bzw nicht erkennt dass es welcher ist.



  • Verwende:

    int iCodePage = 1252; //westeuropäische Codepage
    StreamWriter ^streamWriter = gcnew StreamWriter("FehlerListe.xls", Encoding::GetEncoding(iCodePage));
    


  • witte schrieb:

    Korhil schrieb:

    "...für..." statt "...für..."

    Er wird das im UTF8 speichern. Und Du betrachtest das mit einem Editor der kein Unicode kann bzw nicht erkennt dass es welcher ist.

    Ich betrachte die Datei mit Excel, das dürfte das dooch schaffen, oder nicht ?
    edit: Ich nehme alles zurück - mit dem Editor wird es richtig angezeigt und in Excel nicht 😞

    Gibt es da einen "Trick", damit Excel das richtig erkennt ?

    taraneas schrieb:

    Verwende:

    int iCodePage = 1252; //westeuropäische Codepage
    StreamWriter ^streamWriter = gcnew StreamWriter("FehlerListe.xls", Encoding::GetEncoding(iCodePage));
    

    Funktioniert leider auch nicht. Es kommt die Fehlermeldung:

    ...\Form1.h(1056) : error C2664: 'System::IO::StreamWriter::StreamWriter(System::IO::Stream ^,System::Text::Encoding ^)': Konvertierung des Parameters 1 von 'const char [16]' in 'System::IO::Stream ^' nicht möglich



  • Jetz hast Du die Fehlermeldung des Kompilers. Der musst Du jetz nachgehen.
    Hier findest Du die Konstruktoren des StreamWriter's:
    http://msdn.microsoft.com/en-us/library/system.io.streamwriter.streamwriter.aspx
    Offensichtlich passt dein Aufruf nicht zu den angebotenen Signaturen.

    Irgendwie muss Du selbst denken... sonst wirds nie was.
    Simon



  • simon.gysi schrieb:

    Jetz hast Du die Fehlermeldung des Kompilers. Der musst Du jetz nachgehen.
    Hier findest Du die Konstruktoren des StreamWriter's:
    http://msdn.microsoft.com/en-us/library/system.io.streamwriter.streamwriter.aspx
    Offensichtlich passt dein Aufruf nicht zu den angebotenen Signaturen.

    Irgendwie muss Du selbst denken... sonst wirds nie was.
    Simon

    Danke, der Anstoß hat geholfen. Hatte den Wald vor lauter Bäumen nicht mehr gesehen:

    StreamWriter ^datei = gcnew StreamWriter("FehlerListe.xls", false, System::Text::Encoding::Default);
    ...
    

Anmelden zum Antworten