Java国际化

Jon*_*Jon 1 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");
Run Code Online (Sandbox Code Playgroud)

然后我得到String更改结果.有谁知道发生了什么?

Osc*_*Ryz 6

因为那个方法:

使用平台的默认字符集将此String编码为字节序列

如果您的默认字符集是ie US-ASCII,则不会获得该中文字母使用的相同字节

我想在这个过程中可以添加/删除一个额外的位/字节.

尝试使用getBytes(String charSetName)

public byte[] getBytes(String charsetName)
Run Code Online (Sandbox Code Playgroud)

使用正确的charsetName