`
y806839048
  • 浏览: 1117443 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Java读写中文文件,解决中文乱码问题(win默认是GBK)

阅读更多

Java读写中文文件,解决中文乱码问题

下面是关于Java读写中文文件解决中文乱码的问题分析,原因查找,解决思路,及解决方案。

 

问题:

 

在用Java程序进行读写含中文的txt文件时,经常会出现读出或写入的内容会出现乱码。

 

原因:

 

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

 

分析

 

可以观察其实windows下的记事本的默认的格式是ANSI,查看方式就是创建一个新的文本文件然后点击另存为,在简体中文Windows操作系统中,ANSI 

编码代表 GBK 编码,所以win系统的编码方式是gbk,不可以用utf-8去读。

 

解决思路

 

在Java中,如果我们用java.io.FileReader或者 

java.io.FileWriter来读写文件的话,固然我们可以通过 

java.io.BufferedReader和java.io.BufferedWriter来提高效率, 

但是我们会发现在FileReader和 

FileWriter中我们只能获取编码方式,而不能设置。这样,在FileReader和FileWriter中的编码设置只能服从于一些更为底层的设置,那么在读写多种语言编码的文件时就很容易出现乱码。

 

解决方案

 

另外一种方法就是采用java.io.FileInputStream/java.io.InputStreamReader和 

java.io.FileOutputStream/java.io.OutputStreamWriter来解决这个问题。在 

InputStreamReader和OutputStreamWriter中,可以通过指定编码方式来完成gbk文件的读写。

 

代码如下:

 

//默认情况下,win系统编码是gbk/gbk2312,读取和写入时加入编码字符集可以解决乱码  

public class ReadAndWrite {  

    private static void test(){  

        File firstFile = new File("D://fileone.txt");  

        File secondFile=new File("D://filesecond.txt");  

        BufferedReader in = null;  

        BufferedWriter out = null;        

        try {       

            //加入编码字符集   

            in = new BufferedReader(new InputStreamReader(new FileInputStream(firstFile), "gbk"));  

            //加入编码字符集  

            out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(secondFile), "gbk"));  

            String line = "";  

            while((line = in.readLine())!=null){  

                System.out.println(line);  

                out.write(line+"\r\n");  

            }  

        } catch (FileNotFoundException e) {  

            System.out.println("file is not fond");  

        } catch (IOException e) {  

            System.out.println("Read or write Exceptioned");  

        }finally{             

            if(null!=in){   

                try {  

                    in.close();  

                } catch (IOException e) {  

                    e.printStackTrace();  

                }}  

            if(null!=out){  

                try {  

                    out.close();  

                } catch (IOException e) {  

                    e.printStackTrace();  

                }

           }

     }  

}  

 

文件读写的注意点:

 

1.一定要写BufferedWriter out的close方法不然什么都不会被写入文件的!!! 

2.要写入换行时,一定要\r\n,否则无效

 

分享到:
评论

相关推荐

    java读写csv文件,中文乱码问题

    总的来说,处理Java中CSV文件的中文乱码问题主要涉及正确设置字符编码,而给定的.NET DLL文件与此问题的解决没有直接关联。如果你在.NET环境中遇到类似问题,可以参考.NET的编码处理方式,或者寻找适合的.NET库来...

    彻底解决中文乱码的问题

    这些问题的根源在于编码的不统一,比如文件是GBK编码,但程序按照UTF-8来解析,就会出现乱码。 解决中文乱码问题的关键在于确保编码的一致性。以下是几种常见的解决策略: 1. 文件读写:在使用`BufferedReader`或`...

    java中文文件读写类

    最近在用java的IO包下面的RandomAccessFile类读写中文文件时遇到了乱码问题,解决不了。于是索性自己写个类,可以进行中文文件读写而不乱码。 压缩包里提供了.jar包和源代码。 ************************************...

    Java开发中文乱码问题解决

    总之,解决Java中的中文乱码问题,关键在于识别出问题所在的具体环节,然后根据该环节的特点选择合适的编码设置。理解字符编码的工作原理,以及如何在Java中操作字符编码,对于避免和解决乱码问题至关重要。在实际...

    彻底解决JAVA读取写入 TXT中文乱码问题 源码

    而Java的默认编码是ISO-8859-1,不支持中文字符,这就可能导致读写中文文件时出现乱码。 要解决Java读取TXT文件中文乱码的问题,关键在于指定正确的编码方式。以下是使用`BufferedReader`和`FileReader`读取UTF-8...

    Java读写.properties文件解决中文乱码问题

    本篇文章将深入探讨如何解决Java读写.properties文件时的中文乱码问题。 首先,了解.properties文件的特性。这种文件的默认编码通常是ISO-8859-1,它不支持中文字符。因此,当文件中含有中文时,必须明确指定读写时...

    解决读写包含汉字的txt文件时乱码的问题

    ### 解决读写包含汉字的txt文件时乱码的问题 #### 概述 在使用C#进行编程时,处理文本文件尤其是包含汉字的txt文件,可能会遇到字符编码问题导致的乱码现象。本文将深入探讨如何在C#中正确地读写包含汉字的txt文件...

    idea中.properties文件中文显示乱码问题的解决 文件中文乱码1

    总结,解决IntelliJ IDEA中`.properties`文件中文显示乱码的问题,关键在于确保文件编码与IDE设置相匹配,并且可能需要调整IDE的默认编码设置。通过以上步骤,大多数情况下的乱码问题都能得到解决。如果问题依然存在...

    Java 解决读写本地文件中文乱码的问题

    为了解决Java读写本地文件时的中文乱码问题,我们需要明确两个关键步骤:一是确定文件的原始编码,二是指定Java程序在读写文件时使用的编码。以下是一个简单的示例,展示了如何使用GBK编码读取和写入文件: 1. **...

    c++ 读写txt文件和乱码问题解决

    当涉及到UTF-8编码时,问题在于C++标准库默认处理的是ASCII编码,这可能导致在读写非ASCII字符(如中文、日文等多字节字符)时出现乱码。为了解决这个问题,你需要确保正确地指定文件的编码格式。 在读取UTF-8编码...

    java中文乱码问题详解--- java中文乱码问题详解

    ### Java中文乱码问题详解 #### 一、中文问题的来源与背景 计算机技术发展初期,操作系统主要支持单字节的ASCII字符集。随着全球化进程加快和技术进步,为支持多种语言,尤其是双字节编码的语言(如中文),提出了...

    Java读写xml,word,xml文件(防乱码)

    ### Java读写XML、Word与TXT文件:去除乱码问题详解 #### 一、引言 在实际开发过程中,我们经常需要处理各种类型的文件,包括XML、Word文档以及普通的文本文件(如TXT)。这些文件在读写过程中经常会遇到乱码问题,...

    java读写文件避免中文乱码.pdf

    Java 语言在读写文件时,经常会遇到中文乱码的问题,这是因为 Java 默认使用的编码方式是 ISO-8859-1,而中文字符在这个编码方式下无法正确地表示。为了避免中文乱码,需要使用正确的编码方式,例如 UTF-8。 在读取...

    Java读写properties文件解决中文乱码问题.docx

    Java读写properties文件是在Java开发中一种常见的配置文件读写方式,但是在读写properties文件时,经常会遇到中文乱码问题。下面将详细介绍Java读写properties文件解决中文乱码问题的知识点。 一、Properties文件...

    Java 中文乱码问题

    总结一下,Java中文乱码问题的解决主要依赖于以下几个关键点:正确设置源代码的编码、指定JVM的字符编码、理解并正确处理文件和网络通信的字符编码。通过细心的检查和配置,大部分乱码问题都能得到解决。同时,了解...

    javadbf中文乱码

    在本文中,我们将深入探讨如何使用`javadbf`解决DBF中的中文乱码问题,以及与之相关的编码概念。 首先,DBF文件是一种早期的数据库格式,广泛用于DOS时代的应用程序。这种文件格式不直接支持Unicode编码,而是通常...

    java读写excel包括utf8转码为可识别汉字gbk

    java读写excel包括utf8转码为可识别汉字gbk,jxl方式读取excel,生成一个新的excel

    解决java所有中文乱码集合

    4. 文件保存编码问题:源代码文件的编码格式与编辑器或IDE的默认设置不符,使得源代码中的中文字符在编译时出现乱码。 二、乱码问题分析 1. HTTP头设置:HTTP头中的"Content-Type"字段应指定正确的字符集,例如...

    Java中文乱码浅析及解决方案

    综上所述,解决Java中文乱码问题的关键在于确保整个程序的编码一致性,包括源代码、编译器、运行环境、文件读写、网络传输以及数据库操作等环节。通过细心配置和适当地指定编码,我们可以有效地避免乱码问题,确保...

Global site tag (gtag.js) - Google Analytics