2015年1月24日 星期六

[Java]Big5 遇到「恒」

今天朋友遇到一個需要用Big5讀取中文的Project,遇到『恒』這個字怎麼讀都會出現亂碼,

上網查詢,原來Big5在標準中是沒有以下幾個字 碁、銹、恒、裏、墻、粧、嫺 , 這些是在

倚天Big5延伸  才有加入。─資料來源wiki



以下是一個含有上述字的檔案

 <html>  
 <head>  
 <meta http-equiv="Content-Type" content="text/html; charset=MS950">  
 <title>  
 big5中文測試  
 </title>  
 <link href="fidbweb_style.css" rel="stylesheet" type="text/css" />  
 </head>  
 <body topmargin="0" leftmargin="0">  
 碁、銹、恒、裏、墻、粧、嫺  
 </font></b> <font color="#333399" size="2">big5中文測試</font></td>  
 </body>  
 </html>  

如果我們用以下程式讀取這個檔案
URL url = new URL(factoryUrl);

BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(), "BIG5"));          

String str;
while ((str = br.readLine()) != null) {
    System.out.println(str);
}

結果將會如下

爬文之後,找到一個解法,只要修改一行程式, 改用香港增補字符集(Hong Kong Supplementary Character Set,簡稱HKSCS)
//BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(), "BIG5"));
BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(), "Big5_HKSCS"));
執行結果如下







如果還有遇到其他的解法,請告訴我。

沒有留言:

張貼留言