Christian Kruse: Typkonvertierung in C bzw. Perl

Beitrag lesen

problematische Seite

Hallo pl,

Wenn ich meinen Quellcode in ISO-8859-1 speichere

Logisch, dann kriegst Du eine andere Bytesequenz!

Ich zitiere dich aus dem Posting direkt davor:

Wenn Du bei der Bytesemantic bleibst, spielt die Zeichenkodierung überhaupt keine Rolle.

Diese Aussage ist offensichtlich falsch.

char e = "€"; // Quelldatei UTF-8 kodiert

was schon der Kompiler nicht durchgehen lässt. Siehe Artikel

Ja, aber die Begründung ist falsch. char c = "a" wird auch vom Compiler bemängelt. Der Grund ist nicht, dass "€" bei UTF-8-Kodierung mehrere Bytes benötigt, sondern dass Doublequotes einen Pointer auf einen C-String erzeugen. Was du meinst ist char e = '€' - hier ist deine Begründung richtig.

Und nochwas: uint8_t *binary - don't do that. C gibt dir nur diese eine Garantie: signed charshort intintlong intlong long int. Es ist nicht garantiert, dass uint8_t == unsigned char. Praktisch ist es heutzutage überall der Fall, aber es muss nicht so sein. Die Datentypen existieren aus einem Grund. Wenn du char meinst, benutze auch char.

LG,
CK