溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java讀取文件中含有中文怎么辦

發(fā)布時間:2021-11-30 16:00:40 來源:億速云 閱讀:128 作者:小新 欄目:編程語言

小編給大家分享一下Java讀取文件中含有中文怎么辦,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

  Java讀取文件中含有中文的解決辦法

  折磨了一天的問題,終于在黃昏的時候解決了,現(xiàn)在一吐為快。

  眾所周知,java的中文問題一直是一個老大難的問題,這個現(xiàn)象可以在csdn中java論壇里關(guān)于中文亂碼的提問率就可以了解到,甚至軟件巨人IBM專門開辟了一個解決中文問題的專區(qū),作為一個俗人(一直夢想希望想金凱利那樣成為一個“冒牌天神”,只是一直沒有成功,也許是因?yàn)樯系鄄徽疹欀袊桑?,我也為同意的問題困擾,好在今天解決了。

  隨著我對.NET平臺的徹底放棄(只是生活所迫,畢竟我還要生活),將原有的資源轉(zhuǎn)到Java平臺上來是我當(dāng)前的一個重要任務(wù)之一,說到這里,不得不承認(rèn).net對中文問題解決的很好,雖然偶爾也會出現(xiàn)亂碼。

  問題是這樣的,我的box(http://www.ibeyond.org/box/)原來是使用ASP.net寫的(當(dāng)時只是為了嘗試新的技術(shù)),當(dāng)時為了數(shù)據(jù)的可移植性我放棄了使用數(shù)據(jù)庫,將全部數(shù)據(jù)保存為UTF-8編碼的文本文件,在.net中讀取這種文件秩序只要指定打開文件的編碼方式,中文問題就可以避免。但是按照我以前的思維,java中不是這么作的,java中都是先讀取后轉(zhuǎn)換的,最后的結(jié)果證明我錯了,看來經(jīng)驗(yàn)主意害死人呀。

File f=new File((new BoxConfig()).getBaseDir()+"Data"+request.getParameter("ID")+".inc");XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />

BufferedReader reader = new BufferedReader(new FileReader(f));

String line;

while((line=reader.readLine())!=null){

  strContent+=line;

}

這是我最初的代碼f就是我要讀取的UTF-8格式的文本文件,這一天中經(jīng)過了無數(shù)次的嘗試,包括new String(strContent.getBytes("UTF-8"))(其中嘗試了N種編碼轉(zhuǎn)換),System.setProperty("file.encoding","UTF-8")(其中指定了N種編碼轉(zhuǎn)換),都失敗了,其中甘苦相信各位經(jīng)歷過被程序折磨的各位看官都有所了解,在此略過。終于在google中無數(shù)次查詢中得到了一個后來被證明很重要的一條信息“讀取文件時指定字符編碼”,一語點(diǎn)醒夢中人,.net中不就是這么實(shí)現(xiàn)的嗎?走了一圈彎路終于解決了這個問題。

File f = new File("E:EclipseworkspaceboxData2003">2003-3-7-100.inc");

InputStreamReader  read = new InputStreamReader (new FileInputStream(f),"UTF-8");

BufferedReader reader=new BufferedReader(read);

String line;

while ((line = reader.readLine()) != null) {

System.out.println(line);

}

通過打開文件是指定文件編碼的方法把這個問題輕松的解決了。

看完了這篇文章,相信你對“Java讀取文件中含有中文怎么辦”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI