Although Unicode typically assigns characters to code points to express the graphemes within a system of writing, the Unicode Standard (section 3.4 D7) does with caution:
An abstract character does not necessarily correspond to what a user thinks of as a "character" and should not be confused with a grapheme.
wp/Unicode | Universal Coded Character Set |
ASCII | rob: Codice ASCII American Standard Code for Information Interchange |
wp/UTF-16 | 0.01% of web pages; incompatible with ASCII |
wp/UTF-8 | 95% of web pages; "the mandatory encoding for all text" (wp/WHATWG
Web Hypertext Application Technology Working Group) Unicode Transformation Format – 8-bit. variable-width character encoding. |
windows-1252 | caratteri NON ASCII del character set. |
since Unicode has, among other things, ligature characters such as fi, which expand 2 fold to FI.
So, it is probably better not to assume anything about lengths of Strings after any operation.
Un codice estende-amplia un altro se un qualsiasi testo del minore e' decodificato correttamente dal maggiore.
In particolare devono essere decodificati i singoli caratteri, quindi
i codici del minore devono essere contenuti nel maggiore.
First
code point |
Last
code point |
Byte 1 76543210 |
Byte 2
76543210 |
Byte 3
76543210 |
Byte 4
76543210 |
---|---|---|---|---|---|
U+0000 | U+007F | 0xxxxxxx | |||
U+0080 | U+07FF | 110xxxxx | 10xxxxxx | ||
U+0800 | U+FFFF | 1110xxxx | 10xxxxxx | 10xxxxxx | |
U+10000 | U+10FFFF | 11110xxx | 10xxxxxx | 10xxxxxx | 10xxxxxx |
UTF-8 e' un codice a lunghezza variabile, cioe' i caratteri sono codificati da una tupla di byte in nr variabile, da 1 a 4.
D: Immaginando di iniziare a leggere una sequenza di bytes in punto qualsiasi, come e' possibile sapere in quale punto si e' di una tupla-codice?
R: UTF-8 ha lo start byte riconoscibile, cioe' il 1° byte della tupla che codifica un carattere e' riconoscibile. Ci sono 2 casi
Inoltre il codice fornisce altre informazioni di robustezza
<head>
<meta http-equiv="Content-Language" content="it">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
</head>
the lower 256 characters of Unicode are the same as the 256 characters of Latin-1.
es: "questo ° e' il simbolo del grado" e' un testo in codice win-1252, ma non utf-8 poiche' fatto tutti di ASCII tranne il simbolo del grado il cui byte-code e' 0xb0, che non e' uno start-byte, e che invece dovrebbe esserlo dato che segue un carattere valido.