机器学习和生物信息学实验室联盟
标题:
java读取文本文件中文乱码解决
[打印本页]
作者:
zouquan
时间:
2012-1-12 16:46
标题:
java读取文本文件中文乱码解决
java读取文本文件一般使用类似下面的方法
BufferedReader bin = new BufferedReader(new FileReader("D:/test.txt"));
String s = null;
while((s=bin.readLine())!=null){
System.out.println(s);
}
bin.close();
但是有时我们读取的中文居然是乱码,其实原因也很简单,就是文本文件编码的问题,gbk gb2312 utf-8等等
我们怎么根据编码读取文本文件呢?
java中的public InputStreamReader(InputStream in, Charset cs)带有字符编码,你可以使用这个类使用指定编码读取文本文件
改为如下测试一下是否还是乱码?
BufferedReader bin = new BufferedReader(new InputStreamReader(new FileInputStream("D://test.txt"), "gbk"));
String s = null;
while((s=bin.readLine())!=null){
System.out.println(s);
}
bin.close();
如果还是乱码,你只需根据对应的文本文件修改对应的字符编码就可以,中文编码一般utf-8和gbk就差不多了,同样文本文件的写出也可以使用OutputStreamWriter指定编码
作者:
hsc
时间:
2012-1-12 17:59
我一般都是用UTF-8,看着正规一些,呵呵
作者:
chenwq
时间:
2012-1-13 10:28
GBK编码是GB2312编码的超集,向下完全兼容GB2312,
同时GBK收录了Unicode基本多文种平面中的所有CJK汉字。
同 GB2312一样,GBK也支持希腊字母、日文假名字母、俄语字母等字符,但不支持韩语中的表音字符(非汉字字符)。
GBK还收录了GB2312不包含的汉字部首符号、竖排标点符号等字符。
一次在MySQL中存储的文本带有空格,Java环境中使用了GB2312编码,读出了乱码。使用空格的ASCII码32去转义也没转换过来。后来发现GBK支持编码范围更大,编码换成GBK,就可以了。
欢迎光临 机器学习和生物信息学实验室联盟 (http://123.57.240.48/)
Powered by Discuz! X3.2