Java 解決讀寫(xiě)本地文件中文亂碼的問(wèn)題
Java 解決讀寫(xiě)本地文件中文亂碼的問(wèn)題
前言:
在用Java程序進(jìn)行讀寫(xiě)含中文的txt文件時(shí),經(jīng)常會(huì)出現(xiàn)讀出或?qū)懭氲膬?nèi)容會(huì)出現(xiàn)亂碼。原因其實(shí)很簡(jiǎn)單,就是系統(tǒng)的編碼和程序的編碼采用了不同的編碼格式。通常,假如自己不修改的話(huà),windows自身采用的編碼格式是gbk(而gbk和gb2312基本上是一樣的編碼方式),而IDE中Encode不修改的話(huà),默認(rèn)是utf-8的編碼,這就是為什么會(huì)出現(xiàn)亂碼的原因。當(dāng)在OS下手工創(chuàng)建并寫(xiě)入的txt文件(gbk),用程序直接去讀(utf-8),就會(huì)亂碼。為了避免可能的中文亂碼問(wèn)題,最好在文件寫(xiě)入和讀出的時(shí)候顯式指定編碼格式。
按行讀取本地文件:
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+"\n";
}
read.close();
}
} catch (Exception e) {
e.printStackTrace();
}
return fileContent;
}
寫(xiě)入本地文件:
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();
}
}
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- 解決javaWEB中前后臺(tái)中文亂碼問(wèn)題的3種方法
- java中form以post、get方式提交數(shù)據(jù)中文亂碼問(wèn)題總結(jié)
- java壓縮zip文件中文亂碼問(wèn)題解決方法
- java中Filter過(guò)濾器處理中文亂碼的方法
- java 頁(yè)面url傳值中文亂碼的解決方法
- Java讀寫(xiě).properties文件解決中文亂碼問(wèn)題
- JAVA POST與GET數(shù)據(jù)傳遞時(shí)中文亂碼問(wèn)題解決方法
- java 逐行讀取txt文本如何解決中文亂碼
- java頁(yè)面中文亂碼的解決辦法
- Java中文亂碼解決方案全解析,讓你的程序“說(shuō)人話(huà)”!
相關(guān)文章
基于idea把maven工程轉(zhuǎn)換為web項(xiàng)目
這篇文章主要介紹了基于idea把maven工程轉(zhuǎn)換為web項(xiàng)目,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
springboot自定義yml配置文件及其外部部署過(guò)程
這篇文章主要介紹了springboot自定義yml配置文件及其外部部署過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
springboot+spring?data?jpa實(shí)現(xiàn)新增及批量新增方式
這篇文章主要介紹了springboot+spring?data?jpa實(shí)現(xiàn)新增及批量新增方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
詳解Mybatis核心類(lèi)SqlSessionFactory的構(gòu)建
這篇文章主要為大家詳細(xì)介紹了Mybatis核心類(lèi)SqlSessionFactory的構(gòu)建過(guò)程,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-12-12
淺談Java內(nèi)存模型之happens-before
于存在線(xiàn)程本地內(nèi)存和主內(nèi)存的原因,再加上重排序,會(huì)導(dǎo)致多線(xiàn)程環(huán)境下存在可見(jiàn)性的問(wèn)題。那么我們正確使用同步、鎖的情況下,線(xiàn)程A修改了變量a何時(shí)對(duì)線(xiàn)程B可見(jiàn)?下面小編來(lái)簡(jiǎn)單介紹下2019-05-05
mybatis xml注釋sql的注意事項(xiàng)及說(shuō)明
這篇文章主要介紹了mybatis xml注釋sql的注意事項(xiàng)及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07

