相关疑难解决方法(0)

什么是Java的String内部代表?修改过的UTF-8?UTF-16?

我在Java的内部表示中搜索了String,但我有两种看起来可靠但不一致的材料.

一个是:

http://www.codeguru.com/cpp/misc/misc/multi-lingualsupport/article.php/c10451

它说:

Java使用UTF-16作为内部文本表示,并支持对字符串序列化进行非标准的UTF-8修改.

另一个是:

http://en.wikipedia.org/wiki/UTF-8#Modified_UTF-8

它说:

Tcl也使用与Java相同的修改后的UTF-8 [25]来表示Unicode数据,但对外部数据使用严格的CESU-8.

修改过的UTF-8?还是UTF-16?哪一个是正确的?Java在内存中使用了多少字节?

请让我知道哪一个是正确的以及它使用了多少字节.

java string encoding utf-8 utf-16

46
推荐指数
3
解决办法
3万
查看次数

java utf8编码 - char,字符串类型

public class UTF8 {
    public static void main(String[] args){
        String s = "?"; //0xFF6E
        System.out.println(s.getBytes().length);//length of the string
        System.out.println(s.charAt(0));//first character in the string
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

3
?
Run Code Online (Sandbox Code Playgroud)

请帮我理解这个.试图了解utf8编码在java中的工作原理.根据char char的 java doc定义 :char数据类型是一个16位Unicode字符.

这是否意味着java中的char类型只能支持那些可以用2个字节而不是更多的字节表示的unicode字符?

在上面的程序中,为该字符串分配的字节数为3,但在第三行中返回第一个字符(java中为2个字节)可以容纳3个字节长的字符?这里真的很困惑?

关于这个概念在java/general中的任何好的参考将非常感激.

java utf-8

18
推荐指数
1
解决办法
4万
查看次数

标签 统计

java ×2

utf-8 ×2

encoding ×1

string ×1

utf-16 ×1