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文件的中文乱码问题主要涉及正确设置字符编码,而给定的.NET DLL文件与此问题的解决没有直接关联。如果你在.NET环境中遇到类似问题,可以参考.NET的编码处理方式,或者寻找适合的.NET库来...
这些问题的根源在于编码的不统一,比如文件是GBK编码,但程序按照UTF-8来解析,就会出现乱码。 解决中文乱码问题的关键在于确保编码的一致性。以下是几种常见的解决策略: 1. 文件读写:在使用`BufferedReader`或`...
最近在用java的IO包下面的RandomAccessFile类读写中文文件时遇到了乱码问题,解决不了。于是索性自己写个类,可以进行中文文件读写而不乱码。 压缩包里提供了.jar包和源代码。 ************************************...
总之,解决Java中的中文乱码问题,关键在于识别出问题所在的具体环节,然后根据该环节的特点选择合适的编码设置。理解字符编码的工作原理,以及如何在Java中操作字符编码,对于避免和解决乱码问题至关重要。在实际...
而Java的默认编码是ISO-8859-1,不支持中文字符,这就可能导致读写中文文件时出现乱码。 要解决Java读取TXT文件中文乱码的问题,关键在于指定正确的编码方式。以下是使用`BufferedReader`和`FileReader`读取UTF-8...
本篇文章将深入探讨如何解决Java读写.properties文件时的中文乱码问题。 首先,了解.properties文件的特性。这种文件的默认编码通常是ISO-8859-1,它不支持中文字符。因此,当文件中含有中文时,必须明确指定读写时...
### 解决读写包含汉字的txt文件时乱码的问题 #### 概述 在使用C#进行编程时,处理文本文件尤其是包含汉字的txt文件,可能会遇到字符编码问题导致的乱码现象。本文将深入探讨如何在C#中正确地读写包含汉字的txt文件...
总结,解决IntelliJ IDEA中`.properties`文件中文显示乱码的问题,关键在于确保文件编码与IDE设置相匹配,并且可能需要调整IDE的默认编码设置。通过以上步骤,大多数情况下的乱码问题都能得到解决。如果问题依然存在...
为了解决Java读写本地文件时的中文乱码问题,我们需要明确两个关键步骤:一是确定文件的原始编码,二是指定Java程序在读写文件时使用的编码。以下是一个简单的示例,展示了如何使用GBK编码读取和写入文件: 1. **...
当涉及到UTF-8编码时,问题在于C++标准库默认处理的是ASCII编码,这可能导致在读写非ASCII字符(如中文、日文等多字节字符)时出现乱码。为了解决这个问题,你需要确保正确地指定文件的编码格式。 在读取UTF-8编码...
### Java中文乱码问题详解 #### 一、中文问题的来源与背景 计算机技术发展初期,操作系统主要支持单字节的ASCII字符集。随着全球化进程加快和技术进步,为支持多种语言,尤其是双字节编码的语言(如中文),提出了...
### Java读写XML、Word与TXT文件:去除乱码问题详解 #### 一、引言 在实际开发过程中,我们经常需要处理各种类型的文件,包括XML、Word文档以及普通的文本文件(如TXT)。这些文件在读写过程中经常会遇到乱码问题,...
Java 语言在读写文件时,经常会遇到中文乱码的问题,这是因为 Java 默认使用的编码方式是 ISO-8859-1,而中文字符在这个编码方式下无法正确地表示。为了避免中文乱码,需要使用正确的编码方式,例如 UTF-8。 在读取...
Java读写properties文件是在Java开发中一种常见的配置文件读写方式,但是在读写properties文件时,经常会遇到中文乱码问题。下面将详细介绍Java读写properties文件解决中文乱码问题的知识点。 一、Properties文件...
总结一下,Java中文乱码问题的解决主要依赖于以下几个关键点:正确设置源代码的编码、指定JVM的字符编码、理解并正确处理文件和网络通信的字符编码。通过细心的检查和配置,大部分乱码问题都能得到解决。同时,了解...
在本文中,我们将深入探讨如何使用`javadbf`解决DBF中的中文乱码问题,以及与之相关的编码概念。 首先,DBF文件是一种早期的数据库格式,广泛用于DOS时代的应用程序。这种文件格式不直接支持Unicode编码,而是通常...
java读写excel包括utf8转码为可识别汉字gbk,jxl方式读取excel,生成一个新的excel
4. 文件保存编码问题:源代码文件的编码格式与编辑器或IDE的默认设置不符,使得源代码中的中文字符在编译时出现乱码。 二、乱码问题分析 1. HTTP头设置:HTTP头中的"Content-Type"字段应指定正确的字符集,例如...
综上所述,解决Java中文乱码问题的关键在于确保整个程序的编码一致性,包括源代码、编译器、运行环境、文件读写、网络传输以及数据库操作等环节。通过细心配置和适当地指定编码,我们可以有效地避免乱码问题,确保...