java编解码
如果该编码本身支持中文,同类型 编解码,中文不会乱码,
如果该编码本身不支持中文(如:US_ASCII,ISO_8859_1),同类型 编解码,中文也会乱码
StandardCharsets 不支持GBK
Charset.forName() 支持GBK
String text = "叶赫那拉7890!abC"; String t = new String(text.getBytes(StandardCharsets.US_ASCII), StandardCharsets.US_ASCII); System.out.println(t);
String text = "叶赫那拉sfd阿达撒大大大阿萨达啊发发搜嘎干哈科技干哈v当然更7890!abC"; byte[] utf8Bytes = text.getBytes(Charset.forName("GBK")); String t = new String(utf8Bytes, Charset.forName("UTF-8")); System.out.println(t);
乱码后复现原文
import java.nio.charset.StandardCharsets;
import java.util.Arrays;public class He {public static void main(String[] args) {String text = "为中华崛起而读书?1234567890!.*?abcdABCD";System.out.println("打印经utf8编码后原文的字节数组: "+ Arrays.toString(text.getBytes(StandardCharsets.UTF_8)));String t = new String(text.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1);System.out.println("经ISO_8859_1解码后的乱码内容: "+t); // 为ä¸åå´èµ·è读书ï¼1234567890!.*?abcdABCDSystem.out.println("打印经ISO_8859_1重新编码后复现经utf8编码后原文的字节数组: "+ Arrays.toString(t.getBytes(StandardCharsets.ISO_8859_1)));String t2 = new String(t.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);System.out.println("ISO_8859_1复现utf8编码原字节数组进行utf8解码回原文: "+t2); // 为中华崛起而读书?1234567890!.*?abcdABCDString text2 = "为ä¸\u00ADå\u008D\u008Eå´\u009Bèµ·è\u0080\u008C读书ï¼\u009F1234567890!.*?abcdABCD";String tt = new String(text2.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);System.out.println(tt); }
}
中文乱码特征
String text = "为中华崛起而读书?1234567890!.*?abcdABCD";
US_ASCII编码,ISO_8859_1编码,不支持中文和中文符号,任何形式的解码出来的都是 ?
例:?????????1234567890!.*?abcdABCD
**US_ASCII解码 中文和中文符号都是 �������������**
**ISO_8859_1解码 中文和中文符号都是 ΪÖлªáÈÆð¶ø¶ÁÊ飿**
**utf8解码 �和特殊符号居多**
例:Ϊ�л���������飿1234567890!.*?abcdABCD
**GBK 解码 繁体字居多**
涓轰腑鍗庡礇璧疯�岃涔︼紵1234567890!.*?abcdABCD
**UTF_16、UTF_16LE、UTF_16BE解码其他类型大概率会出现很多繁体字和类似韩文字**
解GBK 캪훐뮪웰뛸뛁쫩ꎿㄲ㌴㔶㜸㤰℮⨿慢捤䅂䍄
解utf8 㼿㼿㼿㼿㼱㈳㐵㘷㠹〡⸪㽡扣摁䉃�
**解 UTF_16、UTF_16LE、UTF_16BE编码 乱码一定有 ,这玩意在这识别不了(代替),并且会附带各自的特征,如utf8的� GBK的繁体字 **
�N:N-SN]峸�孄Nf� 1 2 3 4 5 6 7 8 9 0 ! . * ? a b c d A B C D
g¹p`i eYÎÛVb[Oi u T4³~RÑSKbSbÿ1 2 3 4 5 6 7 8 9 0 ! . * ? a b c d A B C D
��N:N-SN]�w���Nf� 1 2 3 4 5 6 7 8 9 0 ! . * ? a b c d A B C D
N-NNS]w��麐fN�1 2 3 4 5 6 7 8 9 0 ! . * ? a b c d A B C D