中文編碼偵測

2008 年 四月 25 日 (星期五) 1:39 pm
分類:電腦
標籤:,

編碼偵測一直是文件處理、資訊檢索、自然語言處理等任務的前置作業,偵測不好,連字元都無法辨識,遑論後續的顯示、斷詞、檢索、分析?因此,這一直是瑣碎但必要的工作。

在開放原始碼世界裡,常用的編碼偵測系統計有:

這些都滿好用的,應該能夠滿足 C/C++、Java、Python 不同族群的需求。

不過因為 Java 對於繁體中文 “Big5″ 和 “MS950″ 有不同的處理方式(請參考蔡學鏞〈Java 繁體中文處理完全攻略〉系列文章),所以有時候必須先測試看看這些程式庫傳回的編碼結果,究竟是 “Big5″ 還是 “MS950″,並在必要時強制轉換,否則「碁」這類的字可能會變成亂碼。

以 jchardet 為例,我們必須在接收 HtmlCharsetDetector.java 所傳回的結果之後,再多一道轉換:

if (charset.equalsIgnoreCase("Big5"))
   return "MS950";
return charset;

以 ROME 為例,可以修改 XmlReader.javaprepareReader()

private void prepareReader(InputStream is,String encoding) throws IOException {
    // 加入以下這一行
    if (encoding.equalsIgnoreCase("Big5"))  encoding = "MS950";
    _reader = new InputStreamReader(is,encoding);
    _encoding = encoding;
}

進階閱讀


◤建議您一併閱讀以下文章:

3 項留言回應 給 “中文編碼偵測”

  1. 1 tempo 留言:

    google translation api 也有提供 lang detection 的功能唷: http://code.google.com/apis/ajaxlanguage/documentation/#Detect

  2. 2 tempo 留言:

    ㄟ..我搞錯了, 這是要談分辨中文編碼, 而不是用甚麼語言..:S

  3. 3 AK47 » links for 2008-05-11 引用:

    [...] William’s Blog | 中文編碼偵測 [...]

留言回應

[檢核碼]  


Allowed XHTML tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

本站已啟用 spam 防護機制。為避免系統誤判,請在按下按鈕之前,先備份您的留言,以防不測。如果您一直無法順利留言,請改用 email 方式。
此外,如果您想留的言與本篇文章及討論串無關,也請轉而點選這裡。謝謝您!