java读文件乱码问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java读文件乱码问题相关的知识,希望对你有一定的参考价值。

具体的读文件代码如下:
try FileReader fr = new FileReader(filePath); BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(filePath),"UTF-8")); String s = br.readLine(); while (s != null) Scanner scan = new Scanner(s).useDelimiter("\t"); while (scan.hasNext()) MenubarInfo menubarInfo = new MenubarInfo(); menubarInfo.setMenuID(Integer.parseInt(scan.next())); menubarInfo.setMenuName(scan.next()); menubarInfo.setMenuLevel(scan.next()); menubarInfo.setFatherMenu(Integer.parseInt(scan.next())); listMI.add(menubarInfo); s = br.readLine(); br.close(); catch (Exception e) System.out.println(e.toString()); 出现问题的txt文件内容为:

文件的编码类型是:ANSI

当文件的编码改为:UTF-8的时候,程序运行结果变成了

程序的开发环境是jdk1.7,IDE是myeclipse10,操作系统是64位WIN7

参考技术A 可以下载个UltraEdit,保存文件用UTF-8格式,然后再读追问

我在问题最后写了,改成UTF-8页有问题。

参考技术B 把文件另存为UTF-8 就行了,再用 UTF-8读取追问

麻烦看一下我最后面三行。我已经另存了。但还是有问题。

参考技术C 既然文件的编码类型时ANSI,那代码中读取文件的时候把utf-8改为ANSI试一下追问

代码中把UTF-8改成ANSI的话,“ANSI”是无法识别的编码格式。

追答

那你试一下gb2312

参考技术D 调试报错的地方, 看下是怎么报的 这个错误追问

错误在于改成UTF-8之后,文档第一行第一个”1“读出来,用(Integer.parseInt(scan.next()))转换时提示数字格式不对。但用ANSI作为编码的时候就可以正常读出来。问题中第二个有乱码的图,就是文档编码格式为ANSI的时候的运行结果。

追答

如果是1,就不会报错了. 我估计在转换的时候,软件在文件首部增加了一些东西, 才导致报错

追问

我用几个软件打开的时候都没有问题,而且问题的报错也表示已经读到1了。

java写的excel文件转csv文件脚本遇到中文就会乱码

如图,读excel用的是POI包,写CSV用的是csvwriter包
其他字符串数字都不会乱码,为什么中文会乱码,脚本在linux系统操作
补充下,乱码都是问号,编码应该是大众的

这个需要看具体问题了,CSV也是有多种格式的,有种格式UTF-8,还有中UTF-8 no bom

看看格式不同处

文件头多了这个东西,你看看你的CSV中包含这个不,如果包含就是这个问题了

参考技术A 在将数据数据写入csv之前先调用字符转换函数,将字符流的编码转换为UTF-8本回答被提问者采纳 参考技术B linux的编码和window编码不一样的 很纠结的这个

以上是关于java读文件乱码问题的主要内容,如果未能解决你的问题,请参考以下文章

java 读取文件流乱码输出乱码

为啥C语言输出文件内容乱码

java字节流读txt文件出现乱码怎么解决?

java在linux系统下文件夹出现中文乱码的问题

Java中用FileInputStream和FileOutputStream读写txt文件,文件内容乱码的问题,另附循环代码小错误

java读文件中文乱码,终于彻底把握了