[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: vim - Darstellung der Umlaute



Andre Tann schrieb am Donnerstag, den 15. September 2016:

> mir ist folgende Darstellung des vim nicht ganz klar. Nehmen wir an,
> der Cursor steht in einem File mit encoding=utf-8 auf einem "ä".
> Dann ergibt
> 
>     ga: <ä> 228, Hex 00e4, Oktal 344
> 
> Aber
> 
>     g8: c3 a4
> 
> Wieso stimmen die beiden Ausgaben nicht überein? Sprich, wieso gibt
> ga als Hex-Wert nicht auch c3 a4?
> 
> Wenn ich im Insert-Modus eingebe ctrl-v u 00e4, dann kriege ich mein
> ä. Gebe ich ctrl-v u c3a4 ein, dann kommt ein schräger Whitespace
> dabei raus.
> 
> Kann jemand Licht ins Dunkel bringen?

Das hängt damit zusammen, wie die Bytes in UTF-8 kodiert werden.

Vereinfacht erklärt, kodiert UTF-8 alle Zeichen mit mehreren Byte, die 
außerhalb von ASCII liegen. Bei allen Codepunkten > 127 gibt das erste 
Byte immer an, wieviele weitere Bytes folgen, das höchstwertige Bit ist 
immer 1, gefolgt von sovielen 1 wie weitere Bytes folgen. Die 
nachfolgenden Bytes fangen dann immer mit 10XXXXXX an, man kann also nur 
noch 64 Zeichen je weiterem Byte kodieren.
Das bedeuted, wenn das erste Byte 110XXXXX ist, folgt noch 1 weiteres 
Byte, bei 1110xxxx 2 weitere Bytes, etc.

D.h. die Zeichen werden folgendermaßen abgebildet:
Codepunkt:	Kodierung
  U+007F:	0x7f (01111111, 1 Byte, noch innerhalb von ASCII)
  U+0080:	0xC2 0x80 (11000000 10000000),
  U+0081:	0xC2 0x81 (11000000 10000001),
[…] und so weiter, bis zum 'ä':
  U+00E4:	0xC3 0xA4 (11000011 10100100).

In Vim erhälst Du mit "g8" also die Kodierung in UTF-8, während du mit 
"ga" den eigentlichen Codepunkt erhälst.

Grüße
Christian
-- 
Wenn Gott mir nur ein klares Zeichen geben würde!
Etwa ein großes Bankdepot auf meinen Namen in der Schweiz.
		-- Woody Allen (eigentlich: Woody Stewart)


Reply to: