UTF-8 ve UTF-16 arasındaki fark nedir?


cevap 1:

Unicode

UTF-8

ASCII

içinde

  • ASCII'deki "A", onaltılık 0x41'dir; UTF-8'de ayrıca 0x41; UTF-16'da Latin-1'de 0x0041 "À" dir; 0xC0; UTF-8'de 0xC3 0x80'dir; UTF-16'da bu 0x00C0, UTF-8'deki Tibet harfi ཨ 0xE0 0xBD 0xA8; UTF-16, 0x0F68Bu karakter *: http: //www.fileformat.info/info / ... UTF-8'de 0xF0 0xA0 0x80 0x8B; UTF-16'da 0xD840 0xDC0B

Vikipedi

  • http: //en.wikipedia.org/wiki/UTF ...

Fileformat.info


cevap 2:

UTF, Unicode Dönüşüm Biçimi anlamına gelir. Unicode karakter kümesini eşdeğer ikili değerine kodlamak için bir standartlar ailesidir. UTF, kullanıcıların karakterleri minimum alanla kodlamak için standartlaştırılmış bir araca sahip olmaları için geliştirildi.

UTF-8 ve UTF 16, kodlama için belirlenmiş standartlardan sadece ikisidir. Her bir karakteri kodlamak için yalnızca kaç bayt kullandıklarında farklılık gösterirler. Her ikisi de değişken genişlik kodlaması olduğundan, verileri kodlamak için en fazla dört bayt kullanabilirler, ancak minimum olduğunda, UTF-8 sadece 1 bayt (8 bit) kullanır ve UTF-16 2 bayt (16 bit) kullanır.

Bu, kodlanan dosyaların sonuç boyutu üzerinde büyük bir etkiye sahiptir. Yalnızca ASCII karakterleri kullanılırken, UTF-16 kodlu bir dosya, UTF-8 ile kodlanmış aynı dosyadan kabaca iki kat daha büyük olur.

UTF-8'in ana avantajı, ASCII ile geriye doğru uyumlu olmasıdır. ASCII karakter kümesi sabit genişliktedir ve yalnızca bir bayt kullanır.

Yalnızca UTF-8 ile ASCII karakterleri kullanan bir dosya kodlanırken, ortaya çıkan dosya ASCII ile kodlanan bir dosya ile aynı olur. UTF-16 kullanılırken bu mümkün değildir, çünkü her karakter iki bayt uzunluğunda olacaktır.

Unicode farkında olmayan eski yazılım UTF-16 dosyasını sadece ASCII karakterleri olsa bile açamaz.

UTF-8, bayt yönelimli bir formattır ve bu nedenle bayt yönelimli ağlar veya dosya ile herhangi bir problemi yoktur. UTF-16 ise bayt yönelimli değildir ve bayt yönelimli ağlarla çalışmak için bir bayt sırası belirlemelidir. UTF-8, bir sonraki bozulmamış baytı hala çözebileceğinden, dosyanın veya akışın bölümlerini bozan hatalardan kurtulmada daha iyidir.

UTF-16 bazı baytlar bozulursa aynı şeyi yapar, ancak bazı baytlar kaybolduğunda sorun yatar. Kayıp bayt aşağıdaki bayt kombinasyonlarını karıştırabilir ve nihai sonuç bozulabilir

1. UTF-8 ve UTF-16 karakterleri kodlamak için kullanılır

2. UTF-8 karakterleri kodlarken minimum bir bayt kullanır, UTF-16 ise iki karakter kullanır

3. UTF-8 kodlu dosya, UTF-16 kodlu dosyadan daha küçük olma eğilimindedir

4. UTF-8 ASCII ile uyumlu iken UTF-16 ASCII ile uyumlu değildir

5. UTF-8 bayt yönelimli iken UTF-16 değil

6. UTF-8, UTF-16'ya kıyasla hatalardan kurtulmada daha iyidir

Her ikisi de aynı bilgileri kodlayabilir: Unicode standardı tarafından tanımlanan tam buçuk milyon karakter.

Bunu yapmak için sadece farklı sayıda bit / bayt kullanırlar ve bu fark nedeniyle, benzer ve kolayca çevrilebilir karakter kodlarına rağmen farklı karakterleri temsil ederler.

UTF-8 karakterleri kodlamak için minimum 1 8 bit bayt kullanır. ASCII karakter kümesinin 128 7 bitlik karakterleri için, ASCII ile geriye dönük uyumludur: UTF-8'de kodlanan bir Roma alfabesi ASCII metni, UTF-8'i anlamayan bir sistemde normal olarak görüntülenir. Aksanlı karakterler ASCII'nin bir parçası değildir ve bu yüzden hepsi aşağı yukarı karışık olacaktır. 1 baytın ötesinde, UTF-8, Unicode karakter kümesinin geri kalanını kodlamak için 2, 3 veya 4 bayt kullanabilir. Çok baytlı dizilerin ilk baytını kullanma şekli nedeniyle UTF-8, UTF-16'da sadece 2 bayt gerektiren bazı karakterler için 3 bayt kullanır.

UTF-16 en az 2 bayt / 16 bit kullanır. Bu ASCII ile uyumsuz hale getirir. UTF-16'da bir / A-Za-z / metin verildiğinde, UTF-16'yı anlamayan bir sistem, bir karışıklık yaratacaktır (her karakterden önce boş bir karakter gösterecektir).

Birkaç örnek:

ASCII'deki "A", onaltılık 0x41'dir; UTF-8'de ayrıca 0x41; UTF-16'da 0x0041

Latin-1'deki "À", 0xC0; UTF-8'de 0xC3 0x80'dir; UTF-16'da 0x00C0

Tibet mektubu mu? UTF-8'de 0xE0 0xBD 0xA8; UTF-16, 0x0F68

Bu karakter *: UTF-8 içindeki Dizin: / info / ... 0xF0 0xA0 0x80 0x8B; UTF-16'da 0xD840 0xDC0B

İlk üç örnekte, UTF-16 karakteri Unicode kod noktasıyla aynı onaltılık sayıya sahiptir; son örnekteki iki birim karakteri için kod noktası U + 2000B'dir.

Wikipedia, UTF-8 ve UTF-16'nın teknik avantajları / dezavantajlarının ayrıntılı bir karşılaştırmasına sahiptir: