我正在尝试使用下面提到的代码对带有特殊字符(如“É”)的字符串进行编码,然后它没有被正确复制......
String Cdata="MARIE-HÉLÈNE";
byte sByte[]=Cdata.getBytes();
Cdata= new String(sByte,"UTF-8");
System.out.println(Cdata);
预期输出:MARIE-HÉLÈNE 但输出:MARIE-HE 来了
您需要告诉 eclipse 使用 UTF-8 作为其标准输出控制台。您可以通过 Window > Preferences > General > Workspace > Text File Encoding 进行设置。
首先,您需要确保您的源文件实际存储为UTF-8
- 请参阅@Ankur 的答案以获得很好的解释。
然后,您还需要在调用检索字节数组时提供getBytes()
编码String
:
byte sByte[] = Cdata.getBytes("UTF-8");
如果您String.getBytes()
在没有编码的情况下调用,则使用平台的默认编码,它可以是(几乎)任何东西。另请参见java.lang.String.getBytes():
使用平台的默认字符集将此字符串编码为字节序列
有了这个,以下 SSCCE 为我正确打印了预期的输出(注意:从问题中获取标识符,未根据编码约定进行调整):
import java.io.UnsupportedEncodingException;
public class Encoding {
public static void main(String[] args) throws UnsupportedEncodingException {
String Cdata = "MARIE-HÉLÈNE";
byte sByte[] = Cdata.getBytes("UTF-8");
Cdata = new String(sByte,"UTF-8");
System.out.println(Cdata);
}
}