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
我在问题最后写了,改成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中用FileInputStream和FileOutputStream读写txt文件,文件内容乱码的问题,另附循环代码小错误