服务器之家

服务器之家 > 正文

Java读写txt文件时防止中文乱码问题出现的方法介绍

时间:2020-03-19 12:58     来源/作者:WOOSHN

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

1、写文件:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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、读文件:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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; 
}
标签:

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
沙雕群名称大全2019精选 今年最火的微信群名沙雕有创意
沙雕群名称大全2019精选 今年最火的微信群名沙雕有创意 2019-07-07
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
超A是什么意思 你好a表达的是什么
超A是什么意思 你好a表达的是什么 2019-06-06
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
返回顶部