Puoi dirmi in poche parole la differenza tra Unicode e UTF-8?

Migliore risposta

Le altre risposte non sono del tutto corrette.

Unicode , è vero, contiene un elenco di caratteri di quasi tutti gli script del mondo. Tuttavia questa è solo una parte dello standard Unicode: il Set di caratteri codificati universali . Lo standard Unicode include anche regole per il rendering, lordinamento, la normalizzazione e, sì, la codifica di questi caratteri Unicode.

UTF-8 è uno dei le tre codifiche di caratteri standard utilizzate per rappresentare Unicode come testo del computer (le altre sono UTF-16 e UTF-32). Storicamente, i file di testo erano tipicamente codificati come sequenze di byte in cui ogni byte rappresentava un carattere. Tuttavia, poiché un byte può assumere solo uno dei 256 valori, ciò non è possibile per Unicode. La codifica Unicode più semplice è UTF-32 , che utilizza 4 byte (o 32 bit) per carattere. Tuttavia, questo è inefficiente nellutilizzo di archiviazione, memoria ed elaborazione. Fino al 1996 si pensava (o si sperava) che 2 byte sarebbero stati sufficienti per rappresentare ogni carattere Unicode, ma poi la gente ha capito quanti caratteri cinesi ci sono. Di conseguenza, alcuni linguaggi come JavaScript utilizzano ancora 2 byte ( UCS-2 ) per rappresentare i caratteri, il che può causare problemi durante la gestione di caratteri come \ unicode {x1F60E }. Per risolvere questo problema, UCS-2 è stato sostituito da UTF-16 , dove alcuni caratteri erano rappresentati da due unità di codice a due byte anziché una. Ciò rende la manipolazione delle stringhe più complessa (ad esempio il calcolo della lunghezza di una stringa) ma utilizza meno spazio di UTF-32.

UTF-8 è simile a UTF-16, eccetto che le sue unità di codice sono tutte lunghe un byte (8 bit), con caratteri rappresentati da una a quattro unità di codice. I caratteri di testo normale (cioè ASCII) sono tutti rappresentati da un singolo byte, in modo identico alle normali stringhe non Unicode. Questo ha il grande vantaggio che il testo ASCII legacy è valido anche UTF-8. Inoltre, i byte che rappresentano ASCII non sono usati nella rappresentazione di altri caratteri, quindi i programmi legacy che li cercano non devono essere aggiornati. Questi vantaggi, combinati con il fatto che UTF-8 è normalmente il modo più efficiente in termini di spazio memorizzare testo Unicode (specialmente per i testi occidentali) significa che la stragrande maggioranza delle pagine web oggigiorno è codificata in UTF-8.

Risposta

Il programma di elaborazione del testo deve produrre qualcosa (e salvare qualcosa in un file). Se si desidera che i programmi interagiscano, ad esempio il programma di elaborazione del testo per parlare con i driver della stampante e dello scanner, è necessario descrivere come comunicano. E, si vorrebbe farlo in modo efficiente. uno standard consente tale inter-comunicazione. In caso contrario, le virgolette intelligenti di Microsoft Word non funzionano con la stampante Canon e lo scanner HP. Non è quello che desideri….

Modifica aggiunta: Vedi la risposta di Comet su come unicode è correlato alla semantica (non alla sintassi /rappresentazione). Questo va al mio punto sullinteroperabilità. Vuoi che la tua sequenza di caratteri sia “significativa”. Ecco perché alcune cose sono rappresentate in Unicode e altre no. Gli utenti di alfabeto latino, gli utenti di alfabeto cirillico, gli utenti di alfabeto greco e gli utenti di alfabeto turco hanno tutti una lettera che assomiglia a “a” (sebbene in alcuni caratteri siano distinguibili e in altri no) ma gli scrittori in quelle lingue li considerano caratteri diversi (hanno una differenza semantica). Pertanto, unicode li considera diversi punti di codice. Rappresentano semantiche diverse, ordinano in modo diverso, ecc. Lo stesso vale per le virgolette sinistra e destra e alcuni caratteri accentati. In alcune lingue, fanno la differenza semantica. Ottieni un certo tipo di interoperabilità quando rappresenti correttamente la semantica.

Ottieni un tipo diverso quando rappresenti le cose in modo pittorico correttamente. Tuttavia, unicode sta lottando per il primo, non per il secondo.

Se unicode rappresentasse gli omoglifi come caratteri singoli, allora avrebbero il problema su quale tipo di carattere è stato utilizzato e distruggerebbe la correttezza semantica. Una lettera latina a in caratteri blackscript è molto diversa da una elvetica da una romana, ecc. E linclinazione e il corsivo non sono sempre gli stessi, ma a volte lo sono.

Quando leggo i segni in Bulgaria, la maggior parte volte usano un carattere molto diverso per i loro caratteri cirillici rispetto alla loro trascrizione latina quindi è ovvio che sono caratteri diversi, anche per cose come la lettera “a”. Ma a volte non lo fanno e quando vedo Bm su una targa, devo distinguere se trascrive in Vt in inglese o è semplicemente il latino Bm e ci sono parole intere del genere che devo leggere per sapere quale set di caratteri hanno stiamo usando.

E anche ottenere la correttezza semantica è difficile. Il tedesco diesis esiste solo in minuscolo e se stampi la parola in tutto “maiuscolo” usi due caratteri S, ma ci sono parole in minuscolo che usano due caratteri “minuscoli” e quelli che usano diesis s.

Quindi, come quasi tutti gli standard, lunicode è un compromesso. Cerca di ottenere le risposte giuste in modo che le parole siano rappresentate correttamente e possano essere trasmesse usando. Non cerca di essere “graficamente” corretto, quindi una sequenza Unicode descrive la sua rappresentazione stampata in modo univoco con tutti i dettagli prescritti. Hai bisogno di più dellunicode per farlo.

E, una volta che segui quel percorso, hai il problema con i dispositivi che non possono produrre (o inserire) la descrizione che desideri specificare. Una stampante a 200 dpi può fare solo così tanto e ci sono sottigliezze che una stampante a 1200 dpi può esprimere che vengono semplicemente perse a 200 dpi. La domanda diventa se ci tieni? A volte lo fai, ma altre volte no.

Unicode va bene per molti casi in cui non lo fai e semplicemente vuoi la giusta semantica. Quando si desidera trasmettere in modo univoco una parola e sapendo quali punti di codice Unicode vengono utilizzati, è possibile sapere come la parola è scritta in un linguaggio naturale. Lesistenza di omoglifi consente di essere ambigui, ma non lo richiedono. Puoi essere univoco in Unicode. Non è possibile rappresentare tutti i dettagli di come potrebbe essere stampato.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *