字符串的編碼和解碼

java中經常出現亂碼問題,一般情況會出現如下情況:
如讀取文件時,文件中的中文亂碼。
這個情況可以歸類爲讀流文件時的亂碼,解決方法是,如果事先知道流文件的編碼方式,在打開流文件之後,創建InputStreamReader時就指定編碼。以UTF-8爲例。

BufferedReader reader = 
    new BufferedReader(
    new InputStreamReader(
    stream.openStream(),"UTF-8"));

出現這種情況的原因,簡單說就是java中的Reader類並沒喲非常智能,它不能準確的識別出文件流的編碼,而從Reader中讀出的數據直接交給String,String自然顯示亂碼。但是可以保證的是,Reader在讀取英文的時候不會出現亂碼,所以我們在寫中文的時候,有時候會將它先轉換成英文編碼,讀出之後再轉換爲中文。
JAVA中在net包裏提供了兩個類用於字符串的編碼和解碼,如下:

URLEncoder.encode(temp,"Unicode");
URLDecoder.decode(temp,"Unicode");

編碼和解碼的格式要統一,否則依然會亂碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章