JAVA读写文件,如何避免中文乱码

Posted

tags:

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

1、你要将所有的文件的编码都设置成UTF-8,还有,你的MyEclipse或者Eclipse应该配置jsp还有java文件还有项目都设置为UTF-8.
2、eclipse 中使用模板新建 JSP,xhtml等 文件时,默认的编码为:ISO-8859-1。 ISO-8859-1 编码对于中文的显示是不支持的,如果要支持简体中文,则编码方式应为 GBK 或者 GB2312 或者 UTF-8(推荐) 等。右键菜单栏window --> preferences --> 在type filter text中输入jsp; --> 选择下面的jsp -> 选择creating files组中的encoding 为UTF-8编码就可以了
如果要使新建立工程、java文件直接使UTF-8则需要做以下工作: 
1、windows->Preferences...打开"首选项"对话框,左侧导航树,导航到general->Workspace,右侧 Text file encoding,选择Other,改变为UTF-8,以后新建立工程其属性对话框中的Text file encoding即为UTF-8。
2、windows->Preferences...打开"首选项"对话框,左侧导航树,导航到general->Content Types,右侧Context Types树,点开Text,选择Java Source File,在下面的Default encoding输入框中输入UTF-8,点Update,则设置Java文件编码为UTF-8。其他java应用开发相关的文件 如:properties、XML等已经由Eclipse缺省指定,分别为ISO8859-1,UTF-8,如开发中确需改变编码格式则可以在此指定。
参考技术A 看你是怎么读了,,,

我觉得是,,最还将数据按行读取,存在缓冲区中,,
最后在写入文件里面,就行,。
如果是按照一个一个字符或字节读取的话,
杜宇中文来说,一个中文站2个字节,如果找不到相应的编码表的话,就会发生乱码。。。
参考技术B 最近在做HTML静态生成,需要从硬盘上把模版文件的内容读出来。然后,替换相关标签写到指定的文件中。无论是读写,都遇到了中文乱码问题。试过多种方法,发现下面一种可以避免中文乱码。(无论读取还是写入一定要进行编码转换。)

1、JAVA读取文件,避免中文乱码。

/**
* 读取文件内容
*
* @param filePathAndName
* String 如 c:\\1.txt 绝对路径
* @return boolean
*/
public static String readFile(String filePathAndName)
String fileContent = "";
try
File f = new File(filePathAndName);
if(f.isFile()&&f.exists())
InputStreamReader read = new InputStreamReader(new FileInputStream(f),"UTF-8");
BufferedReader reader=new BufferedReader(read);
String line;
while ((line = reader.readLine()) != null)
fileContent += line;

read.close();

catch (Exception e)
System.out.println("读取文件内容操作出错");
e.printStackTrace();

return fileContent;


2、JAVA写入文件,避免中文乱码。

public static void writeFile(String filePathAndName, String fileContent)
try
File f = new File(filePathAndName);
if (!f.exists())
f.createNewFile();

OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(f),"UTF-8");
BufferedWriter writer=new BufferedWriter(write);
//PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(filePathAndName)));
//PrintWriter writer = new PrintWriter(new FileWriter(filePathAndName));
writer.write(fileContent);
writer.close();
catch (Exception e)
System.out.println("写文件内容操作出错");
e.printStackTrace();



我试过写入的时候用

1、PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(filePathAndName)));

2、PrintWriter writer = new PrintWriter(new FileWriter(filePathAndName));

都不行。

以上代码经过运行可以避免中文乱码,关键是要编码转换。追答

亲,参考,有任何疑问请联系我

记得采纳

本回答被提问者和网友采纳
参考技术C 统一utf-8

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

读文件:使用new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));

     StringBuffer strBuf = new StringBuffer();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
int tempchar;
while ((tempchar = bufferedReader.read()) != -1) {
strBuf.append((char) tempchar);
}
bufferedReader.close();
return strBuf.toString();

写文件:使用new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"));

     File file = new File(filePath + "/" + fileName);
        if (!file.exists()) {// 如果文件不存在则创建
            file.createNewFile();
        } else {
            throw new Exception("文件已存在");
        }
        // 获取该文件的缓冲输出流
        BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"));
        // 写入信息
        bufferedWriter.write(content);
        bufferedWriter.flush();// 清空缓冲区
        bufferedWriter.close();// 关闭输出流

 








以上是关于JAVA读写文件,如何避免中文乱码的主要内容,如果未能解决你的问题,请参考以下文章

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

java读写文件,在服务器显示乱码问题

java(IO)读写文件乱码转换UTF-8问题

JAVA使用POI读写word 乱码

读写文件的基本流都有哪些

java 顺序 读写 Properties 配置文件