Sebebinin hızlı olduğunu hayal ediyorum, dizindeki karaktere erişim gibi bir dizi, ancak bazı karakterler 16 bit sığmıyor, bu yüzden işe yaramaz ...
Öyleyse yine de özel durumlarla ilgilenmeniz gerekiyorsa, neden sadece UTF-8'i kullanmıyorsunuz?
Sebebinin hızlı olduğunu hayal ediyorum, dizindeki karaktere erişim gibi bir dizi, ancak bazı karakterler 16 bit sığmıyor, bu yüzden işe yaramaz ...
Öyleyse yine de özel durumlarla ilgilenmeniz gerekiyorsa, neden sadece UTF-8'i kullanmıyorsunuz?
Yanıtlar:
Çünkü eski sabit uzunlukta bir 16-bit olan UCS-2 idi. Tabii ki, 16bit yeterli olmadığı ortaya çıktı. Üstte UTF-16'yı güçlendirdiler.
Originally, Unicode was designed as a pure 16-bit encoding, aimed at representing all modern scripts. (Ancient scripts were to be represented with private-use characters.) Over time, and especially after the addition of over 14,500 composite characters for compatibility with legacy sets, it became clear that 16-bits were not sufficient for the user community. Out of this arose UTF-16.
Java sürümünde UTF-16 henüz ortaya çıkmadı ve UTF-8 Unicode standardının bir parçası değildi.
Ana bölüm için, sade ve basit bir gelecek geçirmezlik uğruna. Yanlış yönlendirilmiş bir sebep olup olmadığı ve bunun yanlış gitmesi farklı bir soru.
Sen 2004 de bazı eksiklikleri açıklar Java 5 ve UTF-16 geçiş, yaklaşık olarak bu belgede tasarım kararlarının bazıları arkasında bazı nedenleri görebilirsiniz: Java Platformu Tamamlayıcı Karakterler ve bkz Java ekosistem kullanımı yapar Neden yığını boyunca farklı kodlamalar? .
UTF-16'yı kullanmanın tuzakları ve neden UTF-8'in genel olarak daha iyi bir seçenek olabileceği konusunda daha fazla bilgi için, bkz. UTF-16'nın zararlı kabul edilmesi gerekir mi? ve UTF-8 Her Yerde manifestosu.
string
Java'da "özel" bir tür yapmaktan (bunun gibi Array
) ne olacağını merak ediyorum String
. Bir dizginin nasıl üretildiğine bağlı olarak, UTF-8, UTF-16, hatta UTF-32 saklamanın en etkili yolu olabilir. "Sıradan" bir sınıfın String
çoklu formatları işlemesi için özellikle etkili bir yol olduğunu sanmıyorum , ancak JVM destekli "özel" bir tip olabilir.