【发布时间】:2012-03-30 17:47:50
【问题描述】:
我在 Java 的内部表示中搜索了 String,但我得到了两种看起来可靠但不一致的材料。
一个是:
http://www.codeguru.com/cpp/misc/misc/multi-lingualsupport/article.php/c10451
它说:
Java 使用 UTF-16 表示内部文本,并支持对 UTF-8 进行非标准修改以进行字符串序列化。
另一个是:
它说:
Tcl 也使用与 Java 相同的修改后的 UTF-8[25] 来表示 Unicode 数据的内部,但使用严格的 CESU-8 来表示外部数据。
修改过的 UTF-8?还是 UTF-16?哪一个是正确的? Java在内存中使用一个char需要多少字节?
请告诉我哪个是正确的以及它使用了多少字节。
【问题讨论】:
-
stackoverflow.com/questions/4655250/…,这可能会回答你的问题。
-
Java 使用什么和 JVM 在内存中使用什么不必相同。看我的回答。
-
你的Java(官方)信息的主要来源应该是java.sun.com! (尽管有 stackoverflow)
-
@CarlosHeuberger 你绝对是对的!感谢您的建议:-)
-
请注意,Java 语言规范没有明确定义字符串在使用时的存储方式,只是它们是不可变的(并且有一些提示可能会被保留)。所以任何答案都应该明确列出运行时,因为它们中的大多数没有,所以它们都是 tosh。
标签: java string encoding utf-8 utf-16