为什么 Java char 使用 UTF-16?
最近,我阅读了很多关于Unicode码位的东西,以及它们如何随着时间的推移而演变,当然我也读过 http://www.joelonsoftware.com/articles/Unicode.html。
但是我找不到真正的原因是为什么Java使用UTF-16作为字符。
例如,如果我的字符串包含 1024 个 ASCII 作用域字符串的字母。这意味着它等于2KB字符串内存,它将以任何方式消耗。1024 * 2 bytes
因此,如果Java基本字符是UTF-8,则只有1KB的数据。即使字符串中有任何字符需要2字节,例如10个字符的“字”,自然也会增加内存消耗的大小。(1014 * 1 byte) + (10 * 2 bytes) = 1KB + 20 bytes
结果不是那么明显,我没有说ASCII,但我对此的好奇心是为什么它不是UTF-8,它也只是照顾多字节字符。UTF-16 在任何包含大量非多字节字符的字符串中看起来都像是浪费内存。1KB + 20 bytes VS. 2KB
这背后有什么好的理由吗?