用于“GB2312”CHARACTER®的Java编码替换为问号(?)

时间:2017-06-29 11:17:33

标签: java

我正在尝试使用GB2312字符集获取编码值,但我得到了? '而不是'®'

以下是我的示例代码:

new String("Test ®".getBytes("GB2312"));

但我正在接受测试?而不是Test®。

有人遇到过这个问题吗?

Java版本 - JDK6

平台:Window 7

我不知道中文字符编码所以需要建议。

此致

马赫什

1 个答案:

答案 0 :(得分:0)

为了更好地理解,该声明分为两部分:

byte[] bytes = "Test ®".getBytes("GB2312");  // bytes, encoding the string to GB2312
new String(bytes);  // back to string, using default encoding

可能®不是有效的GB2312字符,因此会转换为?。查看

的结果
Charset.forName("GB2312").newEncoder().canEncode("®")

基于documentation of getBytes

  

未指定此字符串无法在给定字符集中进行编码时此方法的行为。当需要更多地控制编码过程时,应该使用CharsetEncoder类。

也建议使用CharsetEncoder