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 char
≤ short int
≤ int
≤ long int
≤ long 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