您的位置:首页 > 编程语言 > Java开发

Java读写txt文件中文乱码问题

2016-08-31 16:08 555 查看
问题:在用Java程序进行读写含中文的txt文件时,经常会出现读出或写入的内容会出现乱码。原因其实很简单,就是系统的编码和程序的编码采用了不同的编码格式。通常,假如自己不修改的话,windows自身采用的编码格式是gbk(而gbk和gb2312基本上是一样的编码方式),而IDE中Encode不修改的话,默认是utf-8的编码,这就是为什么会出现乱码的原因。当在OS下手工创建并写入的txt文件(gbk),用程序直接去读(utf-8),就会乱码。为了避免可能的中文乱码问题,最好在文件写入和读出的时候显式指定编码格式。

1、写文件:

[java] view
plain copy

public static void writeFile(String fileName, String fileContent)   

{     

    try   

    {      

        File f = new File(fileName);      

        if (!f.exists())   

        {       

            f.createNewFile();      

        }      

        OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(f),"gbk");      

        BufferedWriter writer=new BufferedWriter(write);          

        writer.write(fileContent);      

        writer.close();     

    } catch (Exception e)   

    {      

        e.printStackTrace();     

    }  

}  

2、读文件:

[java] view
plain copy

public static String readFile(String fileName)  

{     

    String fileContent = "";     

    try   

    {       

        File f = new File(fileName);      

        if(f.isFile()&&f.exists())  

        {       

            InputStreamReader read = new InputStreamReader(new FileInputStream(f),"gbk");       

            BufferedReader reader=new BufferedReader(read);       

            String line;       

            while ((line = reader.readLine()) != null)   

            {        

                fileContent += line;       

            }         

            read.close();      

        }     

    } catch (Exception e)   

    {         

        e.printStackTrace();     

    }     

    return fileContent;   

}   

//默认情况下,win系统编码是gbk/gbk2312,读取和写入时加入编码字符集可以解决乱码 
 记事本默认是ansi编码,也就是gbk,怪不得把编码方式改成utf-8没用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: