Forum: PC-Programmierung UTF8 Kodierung 1 oder mehr bytes


von Klaus (Gast)


Angehängte Dateien:

Lesenswert?

Hallo

ich steh irgendwie auf dem Schlauch was die UTF8 Codierung anbelangt. Es 
geht um angehängtes File. Laut Editor ist jede Zeile genau ein Zeichen 
lang. Es werden aber nicht nur ASCII Zeichen sondern mitunter auch 
chinesische Zeichen angezeigt.

Warum merkt ein Editor, dass die Zeichen ab Zeile 95 2 bytes lang sind 
und ab Zeile 437 3 bytes? Warum werden nicht stattdessen 2 bzw. 3 
entsprechende Zeichen aus dem ASCII Spektrum angezeigt?

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Dein Editor hat eine Heuristik, welche errät dass die Datei als UTF-8 
kodiert sein könnte, und erkennt dann bestimmte Bytefolgen eben als ihre 
jeweiligen Unicode-Zeichen wie eben die chinesischen Zeichen.
Wenn es kein UTF-8 ist, kannst du in deinem Editor wahrscheinlich 
einstellen, welche Kodierung er annehmen soll. Bei Notepad++ kannst du 
z.B. im Menü "Encoding->Character Sets->Western European->ISO 8859-15" 
auswählen, dann wird eben diese Kodierung angenommen, und du siehst die 
entsprechenden Zeichen (keine chinesischen Zeichen mehr), und halt eine 
Menge Nicht-Druckbares. So eine Datei im Hex-Editor anzusehen ist immer 
recht lehrreich.

Was für eine Kodierung soll die Datei denn haben? Einfach nur ASCII ist 
es offensichtlich nicht, weil eben Bytes mit Wert > 127 vorhanden sind, 
die der Editor eben als UTF-8-Multibyte-Sequenzen erkennt.

: Bearbeitet durch User
von Hmmm (Gast)


Lesenswert?

Klaus schrieb:
> Warum werden nicht stattdessen 2 bzw. 3 entsprechende Zeichen aus dem
> ASCII Spektrum angezeigt?

ASCII ist ein 7-Bit-Zeichensatz.

Sobald 8-Bit-Zeichen (also Bit 7=1) dabei sind, muss er raten, sofern Du 
ihm den verwendeten Zeichensatz nicht explizit mitteilst.

von A. S. (Gast)


Lesenswert?

Schau dir https://de.m.wikipedia.org/wiki/Byte_Order_Mark

Mal an. Wenn sie ein Zeichen am Anfang steht, ist es für den Editor ein 
relativ eindeutiges Zeichen.

Falls nicht kann er raten. Z.b. indem er schaut, welche Kodierung 
plausiblen Text produziert.

Nur ASCII: egal ob ASCII oder utf8.

Wenn >127: passt alles als utf8?

Wenn viele 0 Bytes: utf16/32?

Wenn nur einzelne Zeichen > 127: Codepage raten

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.