Forum: Mikrocontroller und Digitale Elektronik Umlaute bei MPLABX


von Master S. (snowman)


Angehängte Dateien:

Lesenswert?

mit C18 unter MPLAB X findet der compiler, dass 'ä', 'ö' und 'ü' den 
selben wert hat (siehe screenshot), unter MPLAB 8.x ging das ohne 
probleme. beim projekt kann man das encoding format (standardmässig 
UTF-8) umstellen, aber das bringt auch nix. kennt jemand den work 
arround?

von homunculus (Gast)


Lesenswert?

Nimm den entsprechenden Zahlenwert innerhalb des switch-case

von Achim M. (minifloat)


Lesenswert?

Für die Umlaute wird einfach mal gern mit "Escape-Buchstabe zum schalten 
auf andere Tabelle + zwieter Buchstabe zum Zeichen aus dieser Tabelle 
auswählen" gearbeitet. Und je nach Standard anders umständlich.

Deswegen "sieht" der Compiler immer nur das Escape-Zeichen oder die 
Escape-Sequenz und meint das Teil wär schon mal da gewesen.
mfg mf

von Master S. (snowman)


Lesenswert?

@homunculus: welchen zahlenwert denn? wenn ich z.b. das wort "Löffel" 
schreiben will, kann ich ja nicht einfach statt des 'ö' eine zahl 
zwischen dem 'L' und dem 'f' schreiben.
@Mini Float: OK, das mag die ursache sein, aber wie kann ich das 
umgehen?

von Master S. (snowman)


Lesenswert?

@Mini Float:du hattest recht. "zurück" wird als "zurück" abgespeichert 
(das file mit dem wordpad geöffnet)

von homunculus (Gast)


Lesenswert?

switch(x) {
   case 132: // ä
   ...
   case 148: // ö
   ...
   case 129: // ü
   ...
   case '°': ...

}

Der Compiler macht aus '<Zeichen>' nichts anderes als dieses ins 
Zahlenformat zu überführen. In einem (unsigned)char kannst du 256 
verschiedene Werte (Zeichen) ablegen.

Wenn du wissen willst welcher Zahlenwert hinter welchem zeichen steckt, 
kannst du zum Beispiel so etwas machen.

#include <stdio.h>

int main() {
    int i;
    for(i = 0; i < 256; ++i)
        printf("%i - %c\n", i, i);

    return 0;
}

von Frank K. (fchk)


Lesenswert?

Master Snowman schrieb:
> mit C18 unter MPLAB X findet der compiler, dass 'ä', 'ö' und 'ü' den
> selben wert hat (siehe screenshot), unter MPLAB 8.x ging das ohne
> probleme. beim projekt kann man das encoding format (standardmässig
> UTF-8) umstellen, aber das bringt auch nix. kennt jemand den work
> arround?

Zur Info: chars sind normalerweise signed, die Umlaute haben also 
negative Charcodes. switch() hat jedoch ein unsigned char als Argument, 
d.h. alle case-Werte werden in unsigned char gewandelt. Bei negativen 
Werten ist das ein Problem.

fchk

von Master S. (snowman)


Lesenswert?

Ok, danke. ich sehe immer mehr durch. die switch-anweisung ist gelösst, 
jetzt bleibt aber noch, wie ich in meinem programmcode z.b. "Löffel" 
schreiben soll.

von Hermann U. (Firma: www.pcb-devboards.de) (gera82)


Lesenswert?

Master Snowman schrieb:
> Ok, danke. ich sehe immer mehr durch. die switch-anweisung ist gelösst,
> jetzt bleibt aber noch, wie ich in meinem programmcode z.b. "Löffel"
> schreiben soll.

Text editor, unter National Language Code Page auf 1250 ANSI - Central 
Europe) einstellen. Vielleicht hilft das.

Gruß Hermann

von Master S. (snowman)


Lesenswert?

@Hermann U.: ja, das war's. es gibt zwar nur "Windows-1250" zur auswahl, 
aber es hat geholfen. für alle, die das gleiche problem haben oder jene, 
die diesen thread später finden:

1. Project -> Properties -> General -> Encoding -> Windows-1250
2. entsprechendes dokument, das probleme macht, ein zeichen ändern
   (z.b. leerschlag irgendwo hinzufügen) und neu abspeichern
3. kompilieren
ps: ohne schritt 2, geht's nicht

vielen dank an alle! :-)

von Micro (Gast)


Lesenswert?

Hermann U. schrieb:
> Text editor, unter National Language Code Page auf 1250 ANSI - Central
> Europe) einstellen. Vielleicht hilft das.

Master S. schrieb:
> 1. Project -> Properties -> General -> Encoding -> Windows-1250
> 2. entsprechendes dokument, das probleme macht, ein zeichen ändern
>    (z.b. leerschlag irgendwo hinzufügen) und neu abspeichern
> 3. kompilieren
> ps: ohne schritt 2, geht's nicht


Bei mir geht es nicht, was mache ich falsch?
hat es vielleicht mit Windows Region und Sprachen was zu tun?

Sieht immer noch so aus: "zurück"

von fop (Gast)


Lesenswert?

Nach dem Umstellen der Codierung musst Du jetzt noch alle Umlaute 
korrigieren.

Vermutlich verwendet der Editor eine Form von UTF-8, in dem ein ü als 
zwei Bytes in der Datei stehen. Dabei ist das erste Byte für ä, ö und ü 
gleich.

Es gibt sogar einen Code in Unicode für stelle das folgende Zeichen als 
Umlaut (mit 2 Punkten drüber dar). Da könntest Du aber ein zweites u in 
zurück erkennen.

Bestimmt gibt es auch Programme, die die Codierung einer Textdatei 
umwandeln können. Die Codierung im Editor musst Du aber auf alle fälle 
auch ändern.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.