Java讀寫txt文件時(shí)防止中文亂碼問題出現(xiàn)的方法介紹
問題:在用Java程序進(jìn)行讀寫含中文的txt文件時(shí),經(jīng)常會(huì)出現(xiàn)讀出或?qū)懭氲膬?nèi)容會(huì)出現(xiàn)亂碼。原因其實(shí)很簡(jiǎn)單,就是系統(tǒng)的編碼和程序的編碼采用了不同的編碼格式。通常,假如自己不修改的話,windows自身采用的編碼格式是gbk(而gbk和gb2312基本上是一樣的編碼方式),而IDE中Encode不修改的話,默認(rèn)是utf-8的編碼,這就是為什么會(huì)出現(xiàn)亂碼的原因。當(dāng)在OS下手工創(chuàng)建并寫入的txt文件(gbk),用程序直接去讀(utf-8),就會(huì)亂碼。為了避免可能的中文亂碼問題,最好在文件寫入和讀出的時(shí)候顯式指定編碼格式。
1、寫文件:
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、讀文件:
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;
}
相關(guān)文章
關(guān)于@RequestBody和@RequestParam注解的使用詳解
這篇文章主要介紹了關(guān)于@RequestBody和@RequestParam注解的使用詳解,本文十分具有參考意義,希望可以幫助到你,如果有錯(cuò)誤的地方還望不吝賜教2023-03-03
Spring Security實(shí)現(xiàn)自定義訪問策略
本文介紹Spring Security實(shí)現(xiàn)自定義訪問策略,當(dāng)根據(jù)誰訪問哪個(gè)域?qū)ο笞龀霭踩珱Q策時(shí),您可能需要一個(gè)自定義的訪問決策投票者,幸運(yùn)的是,Spring Security有很多這樣的選項(xiàng)來實(shí)現(xiàn)訪問控制列表(ACL)約束,下面就來學(xué)習(xí)Spring Security自定義訪問策略,需要的朋友可以參考下2022-02-02
SpringMVC如何把后臺(tái)文件打印到前臺(tái)
這篇文章主要介紹了SpringMVC如何把后臺(tái)文件打印到前臺(tái),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
java線程池ThreadPoolExecutor類使用小結(jié)
這篇文章主要介紹了java線程池ThreadPoolExecutor類使用,本文主要對(duì)ThreadPoolExecutor的使用方法進(jìn)行一個(gè)詳細(xì)的概述,示例代碼介紹了ThreadPoolExecutor的構(gòu)造函數(shù)的相關(guān)知識(shí),感興趣的朋友一起看看吧2022-03-03

