Was ist der Unterschied zwischen Hex-Code (\ x) und Unicode (\ u)?
Von?Quotes
:
\xnn character with given hex code (1 or 2 hex digits)
\unnnn Unicode character with given code (1--4 hex digits)
In dem Fall, in dem das Unicode-Zeichen nur eine oder zwei Ziffern hat, würde ich erwarten, dass diese Zeichen identisch sind. In der Tat ist eines der Beispiele auf der?Quotes
Hilfeseite zeigt:
"\x48\x65\x6c\x6c\x6f\x20\x57\x6f\x72\x6c\x64\x21"
## [1] "Hello World!"
"\u48\u65\u6c\u6c\u6f\u20\u57\u6f\u72\u6c\u64\u21"
## [1] "Hello World!"
nter Linux sehe ich jedoch beim Versuch, ein Nummernzeichen zu drucken,
cat("\ua3")
## £
cat("\xa3")
## �
Das ist, das\x
hex code wird nicht richtig angezeigt. (Dieses Verhalten blieb bei jedem Gebietsschema bestehen, das ich ausprobiert habe.) Unter Windows 7 zeigen beide Versionen ein Nummernzeichen.
Wenn ich in eine Ganzzahl konvertiere und zurück, wird das Nummernzeichen unter Linux korrekt angezeigt.
cat(intToUtf8(utf8ToInt("\xa3")))
## £
Übrigens funktioniert das unter Windows nicht, dautf8ToInt("\xa3")
kehrt zurückNA
.
Etwas\x
Zeichen geben @ zurüNA
unter Windows, aber unter Linux einen Fehler auslösen. Beispielsweise
utf8ToInt("\xf0")
## Error in utf8ToInt("\xf0") : invalid UTF-8 string
("\uf0"
ist ein gültiges Zeichen.)
Diese Beispiele zeigen, dass es einige Unterschiede zwischen @ gib\x
und\u
Formen von Zeichen, die anscheinend betriebssystemspezifisch sind, bei deren Definition ich jedoch keine Logik erkennen kann.
Was ist der Unterschied zwischen diesen beiden Zeichenformen?