用InputStreamReader代替FileReader,InputStreamReader isr=new InputStreamReader(new FileInputStream(fileName),"UTF-8");
易縣網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,易縣網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為易縣1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的易縣做網(wǎng)站的公司定做!
運(yùn)行java帶有中文的代碼就出現(xiàn)亂碼,解決方式如下:
設(shè)置整個(gè)java工程的編碼格式為utf-8,如下圖:
設(shè)置html的編碼格式為utf-8
默認(rèn)不支持中文,你需要設(shè)置一個(gè)語言編碼:
原因:
你的文件編碼默認(rèn)是ANSI編碼。
不同的國家和地區(qū)制定了不同的標(biāo)準(zhǔn),由此產(chǎn)生了 GB2312, BIG5, JIS 等各自的編碼標(biāo)準(zhǔn)。這些使用 2 個(gè)字節(jié)來代表一個(gè)字符的各種漢字延伸編碼方式,稱為 ANSI 編碼。在簡體中文系統(tǒng)下,ANSI 編碼代表 GB2312 編碼,在日文操作系統(tǒng)下,ANSI 編碼代表 JIS 編碼。
不同 ANSI 編碼之間互不兼容,當(dāng)信息在國際間交流時(shí),無法將屬于兩種語言的文字,存儲(chǔ)在同一段 ANSI 編碼的文本中。
如果你的系統(tǒng)是非中文的,你的ANSI對(duì)應(yīng)著相應(yīng)的編碼。當(dāng)讀取一個(gè)文件中的中文時(shí),就會(huì)出現(xiàn)亂碼。當(dāng)然通過FileWriter寫入另一個(gè)文件時(shí),也會(huì)是亂碼。(因?yàn)閱栴}出在讀取上)
解決辦法:
1 通過另一個(gè)節(jié)點(diǎn)流FileInputStream轉(zhuǎn)碼。
InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "GBK"); //或GB2312,GB18030
BufferedReader read = new BufferedReader(isr);
2 如非要用FileReader的話,可以將要讀取的文件改為通用的編碼(如UTF-8).如txt的文件可以在另存為中設(shè)置編碼。然后讀取 顯示 寫入都是正常的。