000
20.11.2013, 21:22 Uhr
KakTyc
|
Hallo Community,
wie schon im Titel geschrieben, habe ich ein Problem mit der Codierung. Damit ihr das Problem genau versteht, beschreibe ich es im Detail:
Ich habe ein kleines Programm mit GUI in Visual Studio 2012 geschrieben, das mehrere Eingabefelder (TextBoxes) hat. Der Text, den man in die Felder eingibt, ersetzt bestimmte Muster in einer .txt-Datei (oder genauer: der Text wird aus einer Quelldatei eingelesen, darin die Muster ersetzt und das Ganze in die Zieldateien geschrieben). Es funktioniert ohne Probleme für alle Buchstaben, außer Umlauten. Diese werden als komische Symbole angezeigt.
Was ich bis jetzt versucht habe:
- Die Dateien in der UTF-8 Kodierung gespeichert (Quelle und Ziel) - Verschiedene Texteditoren versucht - Die wcstombs-Funktion ausprobiert - leider ohne Erfolg - Die codecvt::do_out-Funktion ausprobiert (ich muss zugeben, die war für mich sehr schwer zu verstehen).
Das Hauptproblem ist, dass ich nicht weiß, von welcher in welche Codierung ich den Text umwandeln muss und an welcher Stelle im Programm der Text verändert wird.
Hier ist ein Stück vom Code, der zeigt, wie die Muster in Dateien ersetzt werden:
Code: |
while (getline(fin, temp)) { pos1 = 0; //str1 is the pattern-string while ((pos1 = temp.find(str1, pos1)) != string::npos) { temp.replace(pos1, str1.size(), (context.marshal_as<std::string>(mainField->Text))); }
|
Und so sieht der Text in der Datei aus, wenn ich "ASDÜÖÄ" eingebe:
http://img2.picload.org/image/oicaldg/unbenannt.png
Ich würde mich um jede Hilfe freuen!
Und danke schonmal im Voraus! |