以下测试均基于该软件环境:win10系统、eclipse
概述
在最近的一次编码过程中,我在eclipse上读取一个中文文档的时候出现了乱码。本文就是测试哪种格式的文档会在eclipse中出现乱码,并且给出一种解决方案。
一些背景知识
想要深入理解中文编码格式的相关知识,可先转至UTF-8和GBK等中文字符编码格式介绍及相互转换
测试部分
我对不同编码格式的txt文档进行了输出测试,结果如下:
源码如下:
package chinese_character_code;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Codetest {
public static void fileout(String filename) {
FileReader in = null;
try {
in = new FileReader(filename);
} catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
BufferedReader rd = new BufferedReader(in);
try {
System.out.println(rd.readLine());
rd.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
public static void main(String[] args) {
String ANSI = "src\\txt\\ANSI.txt";
System.out.print("ANSI:");
fileout(ANSI);
String GB18030 = "src\\txt\\GB18030.txt";
System.out.print("GB18030:");
fileout(GB18030);
String Unicode_big_endian = "src\\txt\\Unicode big endian.txt";
System.out.print("Unicode_big_endian:");
fileout(Unicode_big_endian);
String Unicode = "src\\txt\\Unicode.txt";
System.out.print("Unicode:");
fileout(Unicode);
String UTF_8 = "src\\txt\\UTF-8.txt";
System.out.print("UTF_8:");
fileout(UTF_8);
}
}
可以发现,能够正常输出的编码格式有:ANSI和GB18030。
其中一个解决方案
由上面的测试可知五种测试方案中能够正常输出的编码格式为ANSI和GB18030,那么问题来了,如果遇到输出乱码的格式应该怎么办呢?
这里给出一个解决方案是用EditPlus(一个软件)改变编码格式。
- 第一步:下载EditPlus
可移步此处EditPlus下载地址 - 第二步:安装EditPlus
根据提示安装即可 - 第三步:打开软件
- 第四步:File->Open 打开对应文件
- 第五步:进行更改
Document->File Ecoding->Convert Encoding Multiple…->选择对应文件点击OK->选择需要更改的编码格式点击OK - 第六步:检查是否更改完成
我们只需要查看软件中文档右下角就能发现更改完成了。如下图:
总结
-
在eclipse中,能够正常输出的编码格式有:ANSI和GB18030;
不能正常输出的编码格式有:UTF-8、Unicode big endian、Unicode -
对于出现乱码的编码格式我们可以用EditPlus进行更改。