java为什么有些字符串转成字节数组后不能再转回字符串了

 byte[] b = "︽⊙_⊙︽".getBytes("gb2312");
 然后new String(b,"gb2312")

结果输出:?⊙_⊙?

是gb2312本身就不包含‘︽’这个字符么?

Java默认的编码格式似乎不是utf-8,所以在转换的时候可能会有些奇怪的现象 比如byte长度发生改变等

转换的时候试着设定一下编码格式?

gb2312是不支持这个字符的,你改成utf8就发现没有问题了

gb2312编码只包含几千个汉字和有限的符号,换成utf-8看看

修改转码方式为utf-8。

可能gb2312导致了机器码字节长度发生改变,换成UTF-8试试

我也遇到过,rsa加密后的字节数组无法正常转字符串,需要用到encoder类,解密后倒是不用,

有可能是编码格式的问题,我建议你用utf-8比较好一点

特殊符号,汉字有时候会有这种情况