“的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,那么这是任何其他字符集编码的预期行为吗?不是真的,这是一种可能的行为,请参阅我的答案