SORU
11 Ocak 2011, Salı


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

UTF-8 ve UTF-16 arasındaki fark? Neden bunlara ihtiyacımız var mı?

MessageDigest md = MessageDigest.getInstance("SHA-256");
String text = "This is some text";

md.update(text.getBytes("UTF-8")); // Change this to "UTF-16" if needed
byte[] digest = md.digest();

CEVAP
11 Ocak 2011, Salı


Web etrafında bu konuda iyi bir yazı çok olduğuna inanıyorum, ama burada kısa bir özetidir.

Her ikisi de UTF-8 ve UTF-16 değişken uzunlukta kodlama. Ancak, UTF-8 karakter UTF-16 karakter uzunluğu 16 bit ile başlar iken 8 bit en az işgal olabilir.

UTF-8 ana artıları:

  • Hayır desenli basamak, Latin karakterler gibi temel ASCII karakterler, vb. US-ASCII aynı temsil eden bir bayt alır. Bu şekilde US-ASCII dizeleri tüm geçerli birçok durumda iyi geriye doğru uyumluluk sağlar UTF-8 olur.
  • Kullanmak için boş sonlandırılmış bir dize izin yok boş bayt, bu geriye uyumluluk çok büyük bir anlaşma sunuyor.

UTF-8 ana eksileri:

  • Birçok ortak karakter oluşturma ve korkunç bir dize uzunluğu hesaplama yavaşlatır farklı uzunlukta olması.

UTF-16 ana artıları:

  • En makul karakter, Latin, Kiril, Japonca, Çince gibi 2 bayt ile temsil edilebilir. Gerçekten egzotik karakterler gerekli olmadıkça, bu 16-bit UTF-16 alt dizin oluşturma hızı olan sabit uzunlukta kodlama olarak kullanılabilir anlamına gelir.

UTF-16 ana eksileri:

  • Null çok US-ASCII bayt boş sonlandırılmış hiçbir dizeleri ve harcanan bellek bir sürü anlamı olan dizeler.

Genel olarak, UTF-16, UTF-8 metin dosyaları ve ağ protokolleri için çok iyi olsa da, genellikle bellek için daha iyi bir temsilidir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Floortile83

    Floortile83

    16 Ocak 2010
  • Kevin Bruckert

    Kevin Brucke

    30 Aralık 2006
  • The10HourMan

    The10HourMan

    28 EYLÜL 2012