为什么Java使用UTF-16进行内部文本表示

时间:2015-10-18 05:04:00

标签: java character-encoding

Java使用UTF-16进行内部文本表示。但为什么?在我看来,UTF-8更灵活。

来自wiki:

  

UTF-8要求8,16,24或32位(一到四个八位字节)   编码Unicode字符,UTF-16需要16或32位   编码一个字符,UTF-32总是需要32位来编码a   字符。

1 个答案:

答案 0 :(得分:2)

Java被设计并在Unicode被指定为一组16位代码点的时代首次实现。这就是为什么char是16位类型,以及为什么String被建模为char的序列。

现在,如果Java设计人员能够预见到Unicode会增加额外的#34;代码平面",他们可能 1 选择了32位char类型。

Java 1.0于1996年1月问世.Unicode 2.0(引入更高代码平面和代理机制)于1996年7月发布。

在内部,我认为某些版本的Java使用UTF-8作为字符串的表示,至少在某种程度上。但是,仍然需要将其映射到String API中指定的方法,因为这是Java应用程序所需的。如果主要内部表示是UTF-8而不是UTF-16,那么这样做效率会很低。

在您建议他们应该"只需更改字符串API" ...考虑已经存在多少万亿行依赖于当前String API的Java代码行

对于它的价值,大多数(如果不是所有)支持Unicode的编程语言都通过16位charwchar类型来实现。

1 - ......可能没有,记住那些日子里的记忆费用要高得多,程序员在那些日子里更担心这些事情。