如何将中文字符串转换为字节数组和字节数组转换为中文字符串?

时间:2015-11-02 18:51:09

标签: java android

我编程将中文字符串转换为字节数组,将字节数组转换为中文字符串。 我知道当使用UTF-8编码时,中文字符串返回2个字节。 但它在我的电脑中返回3个字节​​。

//test code

String result = System.getProperty("file.encoding"); // UTF-8

String temp = new String("中国");

byte[] bytes = temp.getBytes();  

结果:

bytes = {-28,-72,-83,-27,-101,-67}

但我不太了解。 请帮我。感谢

1 个答案:

答案 0 :(得分:1)

我不知道你在哪里断言中文字符都是UTF-8中的2个字节。

中是U + 4E2D,国家是U + 56FD。如果查看how many bytes each code point takes in UTF-8的摘要,您会看到U + 0800和U + FFFF(包括)之间的代码点需要3个字节。这里的两个角色都属于这个范围。

例如,中(U + 4E2D)编码为11100100 10111000 10101101(您可以使用UTF8到二进制转换here),这三个字节实际上转换为-28,-72和-83两个补码(你可以用十进制到二的补码here)。