Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

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
Ich nutze:
C-Control II Station, OSOPT V3.1
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: