Warum Grad-symbol unterscheidet sich von UTF-8 von unicode?
Warum Grad-symbol unterscheidet sich von UTF-8 von unicode?
Laut: http://www.utf8-chartable.de/ und
http://www.fileformat.info/info/unicode/char/b0/index.htm
unicode ist B0 aber UTF-8 ist C2 B0, Wie Sie kommen!??
- Es gibt Tausende von Zeichen, deren Darstellung unterscheidet sich zwischen UTF-8 und UTF-16. Was macht Sie glauben, dass das Grad-symbol verdient eine Besondere Behandlung?
- Sie müssen verstehen, den Unterschied zwischen Unicode und seine verschiedenen Kodierungen. Die links Lesen die Leute gebucht haben.
- Ich glaube, dass alle Unicode code points haben unterschiedliche Darstellungen in UTF-8 und UTF-16.
Du musst angemeldet sein, um einen Kommentar abzugeben.
UTF-8 ist eine Kodierung UTF Zeichen durch eine variable Anzahl von bytes (die Anzahl der bytes hängt von der code-point).
Code Punkte unter U+0080 und U+07FF verwenden Sie die folgende 2-byte -Codierung:
wo
x
repräsentieren die bits der Codepunkt codiert.Betrachten wir U+00B0. In binary-0xB0 ist 10110000. Wenn ein Ersatz der bits in der oben genannten Vorlage, die man bekommt:
In hex, das ist 0xC2 0xB0.
UTF-8 ist eine Kodierung von Unicode. UTF-16 und UTF-32 sind auch andere Codierungen von Unicode.
Unicode definiert einen numerischen Wert für jedes Zeichen; die Grad-symbol passiert zu sein, 0xB0, oder 176 in dezimal. Unicode nicht definiert ist, wie diese numerische Werte dargestellt werden.
UTF-8 kodiert den Wert
0xB0
als zwei aufeinanderfolgenden Oktetts (bytes), die mit Werten0xC2 0xB0
.UTF-16 codiert den gleichen Wert entweder als
0x00 0xB0
oder als0xBo 0x00
je nach endianness.UTF-32 kodiert es wie
0x00 0x00 0x00 0xB0
oder als0xB0 0x00 0x00 0x00
wieder je nach endianness (ich nehme an, andere Ordnungen möglich sind).Unicode (UTF-16 und UTF-32) verwendet, der code point
0x00B0
für das Zeichen. UTF-8 nicht erlaubt, die Zeichen auf Werte über 127 (0x007F
), als das höchste bit jedes byte ist reserviert, um anzuzeigen, dass diese Besondere Charakter ist eigentlich ein multi-byte-one.Basic 7-bit-ASCII-maps direkt zu den ersten 128 Zeichen von UTF-8. Alle Zeichen, deren Werte über 127 dezimal (7F hex) müssen "escaped" werden durch die Einstellung der high-bit und hinzufügen von 1 oder mehr zusätzliche bytes zu beschreiben.
Die Antworten von NPE, Marc und Keith sind gut und über meine Erkenntnisse zu diesem Thema. Noch hatte ich, Sie zu Lesen ein paar mal, bevor ich erkannte, was dies war. Dann sah ich diese web-Seite, machte es "Klick" bei mir.
In http://www.utf8-chartable.de/, können Sie die folgenden:
Merken, wie es nötig ist, um ZWEI bytes code zu EINEM Zeichen. Jetzt Lesen Sie die akzeptierte Antwort von NPE.
0x7F
(LÖSCHEN) als UTF-8:7F
, und0x80
<control> als UTF-8:C2 80