Ö, Ü, Ä, im C++ Programm

Die Datei, die ich einlese, ist ein DVB-Transportstrom, .ts Endung, dieser besteht ausschließlich aus hex-Zahlen, welche ich als Buchstaben darstellen will, da hier bei einigen Sendern diese Umlaute vorhanden sind, also ich einen hex-Wert von z.B. 153 einlese, welcher dem Ö entspricht, muss ich die Umlaute irgendwie einbinden.
 
Ich kenn mich mit DVB nicht aus. Daher weiß ich auch nicht welche Zeichenkodierung da verwendet wird. Evtl. kann man sogar verschiedene Zeichenkodierungen darin verwenden?

Also wenn du die Zeichen einliest mußt du halt entsprechend "übersetzen". Dazu mußt du natürlich wissen (wie schon gesagt) welche Zeichensätze verwendet werden. Wenn also der sogenannte ANSI Zeichensatz von Windows (cp1252) im DVB Transportstrom verwendet wird und auf der Konsole vermutlich Codepage 850, dann mußt du z.B. für das Ö, welches im cp1252 Zeichensatz den Kode 0xD6 bzw. 214 dezimal hat (was dem großen I mit einem Acute in der Codepage 850 entspricht) in 0x99 bzw. 153 dezimal ändern wenn du es ausgibst.

Das wäre jetzt sicherlich erstmal die einfachste Lösung. Allerdings bekommst du natürlich Probleme wenn der Datenstrom bzw. die Konsole doch plötzlich einen anderen Zeichensatz verwendet.

Es gäbe auch noch eine andere Möglichkeit. Da bin ich mir aber nicht sicher ob das funktioniert. Ich könnte das mal ausprobieren wenn du willst. Da müßte ich mich allerdings noch etwas schlau machen.
 
Ich hab mal ein wenig rumprobiert, wenn ich meine ausgelesenen Daten in eine Datei speichere, wird Ö usw. richtig dargestellt.

Also gehe ich davon aus, dass das selbe Problem ist, als wöllte ich z.B.

Code:
cout << "Österreich 1";

ausgeben, gibt es hier eine Möglichkeit das in der Konsole richtig darzustellen, Oder muss ich sowas abfangen, indem ich z.B. Ö abfange und durch Oe ersetzte
 
Das hab ich doch gerade erklärt, oder nicht? Es werden verschiedene Zeichensätze unter Windows und in der Konsole verwendet.

Wenn du die Ausgabe in eine Datei speicherst und mit einem Editor anschaust, der den gleichen Zeichensatz verwendet wie der Datenstrom den das Programm einliest dann ist natürlich alles in Ordnung und die Umlaute werden korrekt dargestellt. Wenn du es allerdings mit einem DOS Editor anschaust werden die Umlaute wieder durch andere Zeichen ersetzt sein.

Es kommt drauf an was du willst. Welchen Zeichensatz möchtest du denn verwenden? Möchtest du das es in der Konsole "richtig" ist oder möchtest du es in eine Datei speichern die mit einem (Windows-)Editor angeschaut werden soll?

Wenn du Wert darauf legst, das die Ausgabe auf der Konsole korrekt ist mußt du die Zeichen in den Zeichensatz übersetzen der auf der Konsole verwendet wird. Unter einem deutschen Windows ist das normalerweise der erweiterte ASCII Zeichensatz Codepage 850.

Wenn du beides willst, mußt du tatsächlich die Umschrift Oe statt Ö usw. verwenden (außer du übersetzt immer in den "DOS-Zeichensatz" und nimmst einen Windows-Editor bei dem man den Zeichensatz umstellen kann).
 
Zurück