java读取文件乱码

Posted

tags:

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

FileReader Fr=null;
BufferedReader Br=null;
try
Fr=new FileReader(Abs);Abs为通过JFileChooser获取的绝对路径,没有问题
Br=new BufferedReader(Fr);
String str="";
String allText="";
while((str=Br.readLine())!=null)
allText+=str+"\r\n";

System.out.print(allText);能够换行,乱码
jtf.setText(allText);不能换行,乱码(jta为JTextFiled对象)
catch (Exception e1)

e1.printStackTrace();
finally

try
Fr.close();
Br.close();
catch (IOException e1)
// TODO Auto-generated catch block
e1.printStackTrace();


求高手指点,初学JAVA。

那是你选中的文件内容字符编码与jvm缺省的文件编码不一致,如unix下jvm缺省文件编码一般为iso8859-1,而你的文件内容可能使用了GBK,可使用如下代码:
FileInputStream fis = new FileInputStream(Abs);
InputStreamReader isr = new InputStreamReader(fis, "GBK"); //GBK替换成你文件内容使用的编码
BufferedReader br = new BufferedReader(isr);
参考技术A java文件读取的时候有中文就很出现乱码,通常获取到的文件中通常都是“iso8859-1”格式,需要转换为“UTF-8”格式。
如:String str = new String(str.getByte("iso8859-1"),"UTF-8");进行下强制转换后在进行读取即可。
备注:通常格式有GBK、UTf-8、iso8859-1、GB2312,如果上面的强制转换不成功,依次进行这些格式的尝试,肯定是可以解决问题的。
参考技术B 直接在属性里面改改就可以了啊。 参考技术C 我这里没有乱码,有没有可能,你的文件的编码方式的问题

Java 读取文件中文乱码处理 Java IO读取txt文件内容的正确姿势避免中文乱码

在读取文件时,使用InputStreamReader 指定编码格式避免中文乱码

 @Test
    public void txtTest() {
        File file = new File("D:\\\\images\\\\imobile冠晨达专卖店\\\\钢化膜-11\\\\钢化膜\\\\1+8t\\\\销售属性.txt");
        try (FileInputStream fis = new FileInputStream(file);
             InputStreamReader isr = new InputStreamReader(fis, "gbk");
             BufferedReader br = new BufferedReader(isr)) {
            String str;
            while ((str = br.readLine()) != null) {
                System.out.println("str = " + str);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        File file2 = new File("D:\\\\images\\\\imobile冠晨达专卖店\\\\钢化膜-11\\\\钢化膜\\\\1+8t\\\\销售属性.txt");
        try (FileReader reader2 = new FileReader(file2);
             BufferedReader br2 = new BufferedReader(reader2)) {
            String str2;
            while ((str2 = br2.readLine()) != null) {
                System.out.println("str2 = " + str2);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

代码运行效果如下图
在这里插入图片描述
如果在设置编码格式后还是出现文件乱码,检查一下文件编码格式是不是于设置的不一致。如果不一致的情况可以将文件另存为指定编码格式,文件另存为操作如下
在这里插入图片描述
在这里插入图片描述

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

Java用BufferedReader读取文件中时总是乱码

Java读取文件,出现中文乱码,GB2312文件读取乱码

node读取本地文件中文乱码

java读文件乱码问题

Qt读取文本文件乱码怎么办

Java 读取文件中文乱码处理 Java IO读取txt文件内容的正确姿势避免中文乱码