Re: Umlaute und Stringkonstanten Kategorie: Programmierung (von Icebear - 17.07.2008 16:16) | ||
Als Antwort auf Umlaute und Stringkonstanten von Werner - 13.07.2008 14:54 | ||
| ||
Hallo, ich hatte ein ähnliches Problem. Immer wenn ein Umlaut mitten im Wort ist, wird er falsch dargestellt. Abhilfe brachte hier im Quelltext direkt nach dem Umlaut 2 Anführungsstriche oben zu schreiben, also den String zu beenden und einen Neuen anzufangen, intern werden die dann als ein string behandelt. zum Bsp.: const menu[] = "Temperatursensor 1 xF5""berprxF5""fen"; Gru� Björn > Hallo, > > habe da was gefunden und auch eine Lösung, aber keine Erklärung. > Vielleicht kann mir irgend wer sagen, warum das so ist. > > Hatte ein paar Texte für eine Menüeingabe als Konstanten-Array definiert. > Anschlie�end ausgegeben. Die Umlaute werden dabei als Escape-Sequenzen codiert. > ä = xe1 > ö = xef > ü = xf5 > � = xe2 > > Jedoch ist statt einem ü das Yen-Zeichen heraus gekommen (durchgestrichenes Y) > Also habe ein wenig getestet und musste feststellen, dass die Escape-Sequenzen > richtig waren. Jedoch muss ich den String zusammensetzen. > > Hier ein paar Zeilen als Quellcode: > > const MENU1[] = "0: Zurxf5ck ", "1: Datum stellen"; > const MENU2[] = > "xe0xe1xe2xe3xe4xe5xe6xe7xe8xe9xeaxebxecxedxeexef", > "xf0xf1xf2xf3xf4xf5xf6xf7xf8xf9xfaxfbxfcxfdxfexff"; > const MENU3[] = "0: Zur" "xf5" "ck ", "1: Datum stellen"; > > // Diese Variante zeigt das Yen-Zeichen statt dem ü > lcdext.line(1); > lcdext.print(MENU1[0]) > lcdext.line(2); > lcdext.print(MENU1[1]) > sleep 5000; > > // Diese Variante zeigt viele Sonderzeichen. u.a. das ä, ö, ü und das � > lcdext.line(1); > lcdext.print(MENU2[0]) > lcdext.line(2); > lcdext.print(MENU2[1]) > sleep 5000; > > // Diese Variante zeigt tatsächlich ein Zurück > lcdext.line(1); > lcdext.print(MENU3[0]) > lcdext.line(2); > lcdext.print(MENU3[1]) > sleep 5000; > > > Kann mir einer sagen, warum der Compiler in der Variante MENU1 das ü falsch interpretiert > und in den Varianten MENU2 und MENU3 richtig? Ich ging bis dato davon aus, dass ein > Escape-Wert mit x eingeleitet stets ein zweistelligen Hex-Wert erwartet. (Kenn ich so von > anderen Sprachen) > > Any Idea? > > PS: Tritt auf dem Display der C-Control II Station auf. | ||
Antwort schreiben Antworten: |