“的Java编码”;GB2312“;性格®;替换为问号(?)

“的Java编码”;GB2312“;性格®;替换为问号(?),java,Java,我试图使用GB2312characterset获取编码值,但得到的是“?”而不是“®” 下面是我的示例代码: new String("Test ®".getBytes("GB2312")); 但我要参加考试?而不是测试® 有人面临过这个问题吗 Java版本-JDK6 平台:窗口7 我不知道汉字编码,所以需要建议。为了更好地理解,声明分为两部分: byte[] bytes = "Test ®".getBytes("GB2312"); // bytes,

我试图使用
GB2312
characterset获取编码值,但得到的是“?”而不是“®”

下面是我的示例代码:

new String("Test ®".getBytes("GB2312"));
但我要参加考试?而不是测试®

有人面临过这个问题吗

Java版本-
JDK6

平台:
窗口7


我不知道汉字编码,所以需要建议。

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

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("®")
基于:

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


这也建议使用。

可能®无法在GB2312中编码,因此将其转换为
。查看
Charset.forName(“GB2312”).newEncoder().canEncode(“”)的结果谢谢Carlos,那么这是任何其他字符集编码的预期行为吗?不是真的,这是一种可能的行为,请参阅我的答案