javaget亂碼
① 在java中怎樣處理中文亂碼的問題(有幾種處理方式)
讀取文件的時候如果是用的read方法(位元組流),碰到中文輸出就是亂碼,然後存儲的時候設置下編碼為GBK或者是UTF-8形式即可,可以有效的解決亂碼問題。
可以通過BufferedReader 流的形式進行流緩存,之後通過readLine方法獲取到緩存的內容。
BufferedReader bre = null;
try {
String file = "D:/test/test.txt";
bre = new BufferedReader(new FileReader(file));//此時獲取到的bre就是整個文件的緩存流
while ((str = bre.readLine())!= null) // 判斷最後一行不存在,為空結束循環
{
System.out.println(str);//原樣輸出讀到的內容
};
備註: 流用完之後必須close掉,如上面的就應該是:bre.close(),否則bre流會一直存在,直到程序運行結束。
可以通過「FileOutputStream」創建文件實例,之後過「OutputStreamWriter」流的形式進行存儲,舉例:
OutputStreamWriter pw = null;//定義一個流
pw = new OutputStreamWriter(new FileOutputStream(「D:/test.txt」),"GBK");//確認流的輸出文件和編碼格式,此過程創建了「test.txt」實例
pw.write("我是要寫入到記事本文件的內容");//將要寫入文件的內容,可以多次write
pw.close();//關閉流
備註:文件流用完之後必須及時通過close方法關閉,否則會一直處於打開狀態,直至程序停止,增加系統負擔。
② 關於java中 get提交方式的亂碼問題。
這個原因是伺服器導致的,伺服器比如tomcat接收get方法默認使用的是ISO-8859-1編碼,而瀏覽器發送時文字編碼是和頁面編碼保持一致的,如果頁面是使用utf-8 編碼 get方法文字自然是使用utf-8編碼,但接收伺服器沒有設置的情況下用了ISO-8859-1編碼接收,中文自然就成亂碼了,不過由於ISO-8859-1編碼是單位元組編碼所以我們可以使用getBytes("ISO-8859-1"),"utf-8"這樣把文字重新轉換成utf-8 編碼。
第一個發送的文字是utf-8編碼 而tomcat接收後用錯誤的ISO-8859-1編碼了,這樣getBytes("ISO-8859-1")後會重新得到正確的utf-8編碼的位元組數組 ,然後用 new
String(request.getParameter("something").getBytes("ISO-8859-1"),"utf-8")重新將位元組編碼成UTF-8編碼的文字這樣文字就正確了。
如果是tomcat的話 server.xml文件里
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
後邊的URIEncoding就是設置get方法編碼的如果沒有指定URL接收的編碼類型,自動會用ISO-8859-1編碼
③ JAVA 亂碼 根本原因是什麼
右鍵點擊亂碼文件,選preferenses,看看resource里的編碼是不是正確,虧攔搜如果不是utf-8就改成utf-8,衡或如果是utf-8的話你改成別的編碼試試看看,然後把正常狀態下的內容復制出來,在把文件改成utf-8後銷歷把文件復制進去