2011-02-03 10 views
13

quali caratteri Unicode rientrano in 1, 2, 4 byte? Qualcuno può indicarmi di completare la tabella dei caratteri?UTF-8 Dimensione codifica

+4

Leggere prima questo: http://www.joelonsoftware.com/articles/Unicode.html –

+2

Una tabella completa? Sarà un ENORME. Vedi questo per una versione stampata del Basic Plilingual Plane (ce ne sono altri 16): http://shop.designinmainz.de/en/Poster/decodeunicode-Basic-Multilingual-Plane-BMP-Map Vedi DecodeUnicode per un wiki come rappresentazione di caratteri Unicode: http://www.decodeunicode.org/en – Piskvor

+0

Si potrebbe anche leggere su Universal Codes: http://en.wikipedia.org/wiki/Universal_code_%28data_compression%29 – ruslik

risposta

21

I caratteri sono codificati in base alla loro posizione nell'intervallo. Si può effettivamente trovare l'algoritmo nella pagina di Wikipedia per UTF8 - è possibile implementare molto rapidamente Wikipedia UTF8 Encoding

  • U + 0000 a U + 007F sono (correttamente) codificato con un byte
  • U + 0080 a U + 07FF sono codificati con 2 byte
  • U + 0800 a U + FFFF sono codificati con 3 byte
  • U + 010000 a U + 10FFFF sono codificati con 4 byte
4

L'articolo wikipedia su 012.303.903.962.ha una buona abbastanza descrizione della codifica:

  • 1 byte = punti codice 0x000000 a 0x00007F
  • punti
  • 2 byte = codice 0x000070 a 0x0007FF
  • punti
  • 3 byte = codice 0x000800 a 0x00FFFF
  • 4 bytes = codice indica 0x010000 a 0x10FFFF

I grafici possono essere scaricati direttamente da unicode.org. È un set di circa 150 file PDF, perché un singolo grafico sarebbe enorme (forse 30 MiB).

Si noti inoltre che Unicode (rispetto a qualcosa come ASCII) è molto più complesso da elaborare: ci sono cose come testo da destra a sinistra, segni di ordine dei byte, punti di codice che possono essere combinati ("composti") per creare un singolo carattere e diversi modi di rappresentare esattamente la stessa stringa (e un processo per convertire stringhe in una forma canonica adatta per il confronto), molto più caratteri dello spazio bianco, ecc. Suggerirei di scaricare l'intera specifica Unicode e di leggere la maggior parte di esso se hai intenzione di fare più di "non molto".

1

I compromessi UTF-8 da 1 a un limite di 6 byte, sebbene la quantità corrente di punti di codice sia coperta con soli 4 byte. UTF-8 utilizza il primo byte per determinare quanto tempo (in bytes) il personaggio è - vedi i vari collegamenti alla pagina Wiki:

UTF-8 Wikipedia

byte singolo UTF-8 è efficace ASCII - UTF-8 era progettato per essere compatibile con esso, che è il motivo per cui è più prevalente di UTF-16, per esempio.


Edit: A quanto pare, è stato concordato punti di codice del UTF-8 non superi 21 bit (4 sequenze di byte) - ma ha la capacità tecnica di gestire fino a 31 bit (6 byte UTF-8) .

+0

UTF-8 è limitato a 4 byte. I punti di codice Unicode sono limitati a U + 1FFFFF (21 bit) e la codifica UTF-8 è canonica (deve scegliere la più corta). Pertanto, non si può mai finire con una sequenza UTF-8 a 5 byte. O sarebbe decodificato in un personaggio passato U + 1FFFFF, o non sarebbe canonico. – MSalters

+0

Il set di caratteri corrente di UTF-8 utilizza solo 4 byte, ma è stato progettato per punti di codice fino a 31 bit, risultando in una sequenza di 6 byte. – Mikaveli

+2

* Caratteri a 6 byte *? [shudder] – Piskvor

Problemi correlati