[英]Java Internationalization
我在处理Java字符串时遇到麻烦。 我有一个字符串s,其值是丞(我随机选择的中文字符,我不会说中文)。 如果我打电话
String t = new String(s.getBytes());
if (s.equals(t))
System.out.println("String unchanged");
else
System.out.println("String changed");
然后我得到String更改的结果。 有人知道发生了什么吗?
因为那个方法 :
使用平台的默认字符集将此字符串编码为字节序列
如果您的默认字符集为US-ASCII
,则不会获得该中文字母使用的相同字节
我想可能会在此过程中添加/删除一个额外的位/字节。
尝试使用getBytes(String charSetName)
public byte[] getBytes(String charsetName)
使用正确的charsetName
getBytes()方法使用默认编码。 根据文档:
当需要对编码过程进行更多控制时,应使用CharsetEncoder类。
实际上,我知道了这一点,对这个帖子感到抱歉。 我使用的是默认的Java字符集,而不是将其显式转换为UTF-8字符集。 现在可以使用了。
字符串t =新的String(s.getBytes()); 可以使用ASCII作为默认字符集创建字符串。 使用以下方法创建以charsetName为UTF-8的字符串
String(byte []个字节,int偏移量,int长度,字符串charsetName)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.