如何将中文字符串转换为字节数组和字节数组为中文字符串?
问题描述:
我正在编程将中文字符串转换为字节数组和字节数组转换为中文字符串。 我知道在使用UTF-8编码时,中文字符串返回2个字节。 但它在我的电脑中返回3个字节。如何将中文字符串转换为字节数组和字节数组为中文字符串?
//test code
String result = System.getProperty("file.encoding"); // UTF-8
String temp = new String("中国");
byte[] bytes = temp.getBytes();
结果:
字节= {-28,-72,-83,-27,-101,-67}
但我don'k熟悉。 请帮帮我。谢谢
答
我不知道你在哪里得到断言,中文字符都是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-to-binary转换here),而这三个字节实际上转换为-28,-72和-83二进制补码(你可以用十进制补码来补码here)。
+0
感谢您的回答。你帮我 –
'我知道什么时候使用UTF-8编码,中文字符串返回2个字节的来源? – njzk2