Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Codierung für Umlaute

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
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!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.11.2013, 23:24 Uhr
Hans
Library Walker
(Operator)


Hi,

das Problem liegt bei dem Codepages, mit denen Windows (bzw. manche Programme) arbeiten. Codepages sind die Definitionen des Zeichensatzes, der zur Darstellung der Zeichen verwendet werden. Unter Windows ist das oftmals der Zeichensatz "Windows Latin1", auch "Windows Codepage 1252" genannt. Daneben gibt es aber noch zwei andere Definitionen, nämlich ISO 8859-1 bzw. [http://de.wikipedia.org/wiki/ISO_8859-15]ISO 8859-15[/url], aus denen der "Windows 1252-Zeichensatz" gebastelt wurde, und die Codepage 850, die noch aus DOS-Zeiten stammt, und bei Textkonsolen oder verschiedenen Texteditoren noch verwendet wird.

Wenn Du auf diese MSDN-Seite gehst, findest Du links zu den verschiedenen Codepages und Tabellen, die die Codes für die verschiedenen Zeichen enthalten. Meisstens sind die Zeichen aus der Codepages 850 und Windows 1252 (oder Unicodezeichen) miteinander vertauscht.

Hans


P.S. und hier noch die Sache mit der Internationalisierung, die hinter den ganzen Codepages, etc. steckt: http://msdn.microsoft.com/en-us/goglobal/bb688132
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: