摘要:当我们在浏览器中遇到类似“鍙戣捣璁㈠崟鏀�粯鍏ュ彛”这样的中文乱码(GBK等),在不知道是哪种编码转哪种编码出现的情况,该如何恢复
当我们在浏览器中遇到类似“鍙戣捣璁㈠崟鏀�粯鍏ュ彛”这样的中文乱码(GBK等),在不知道是哪种编码转哪种编码出现的情况,该如何恢复中文乱码呢?
如果你懂Java,那么你一定明白这句话表示的是什么:
String newStr = new String("鍙戣捣璁㈠崟鏀\uE219粯鍏ュ彛".getBytes("GBK"),"UTF-8");它表示如果错误的中文乱码之前设置的是GBK,而你浏览器或开发环境是UTF-8,造成了中文乱码“鍙戣捣璁㈠崟鏀�粯鍏ュ彛”这种效果,那么可以借用上面的方法进行还原中文。
如果你什么都不知道,可以借用下方的工具类来恢复中文乱码问题,代码如下:
public class CodeDemo {
private static String[] charsetArr = {"UTF-8","GB18030","GB2312","GBK","Windows-1252","ISO8859-1"};
public static void testAllCharset(String text) {
if (text == null || text.length() == 0) {
System.out.println("文本不能为空");
return;
}
System.out.println("说明原始设置编码是 当前浏览器编码(出错) 乱码恢复的内容");
printSeparator();
for (String curCharset : charsetArr) {
try{
byte[] btArr = text.getBytes(curCharset);
for (String originCharset : charsetArr) {
if (originCharset.equals(curCharset)) {
continue;
}
String encodeText = new String(btArr,originCharset);
printTable(curCharset, originCharset, encodeText);
}
printSeparator();
}catch (Exception ex){
ex.printStackTrace();
}
}
}
private static void printSeparator() {
System.out.println("--------------------------------------------------------");
}
//打印表格
private static void printTable(String curCharset, String originCharset, String encodeText) {
System.out.print(curCharset);
for (int i = 0; i < 15 - curCharset.length(); i++) {
System.out.print(" ");
}
System.out.print("| " + originCharset);
for (int i = 0; i < 16 - originCharset.length(); i++) {
System.out.print(" ");
}
System.out.println("| " + encodeText);
}
public static void main(String[] args){
//测试乱码
testAllCharset("鍙戣捣璁㈠崟鏀\uE219粯鍏ュ彛");
}
}上方代码输出的结果如下所示:
从上方截图不难看出,原来我们出现标题中的这种中文乱码,是因为原始编码是GBK,而浏览器或开发环境设置的编码是UTF-8,导致的这种错误!
如果我们不知道原始中文设置的什么编码,而在浏览器或开发环境中却出现“鍙戣捣璁㈠崟鏀�粯鍏ュ彛”这种中文乱码错误,那么就可以直接用上方的工具类输出结果查看即可。
来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/java/1095.html