發表文章

目前顯示的是 3月, 2018的文章

中文難字與 Html Entities (C#)

工作的環境中會遇到新舊系統交雜以及中文內碼轉換問題。 某系統為Big5編碼,用 Html Entities 儲存但超出Big5編碼範圍的unicode字元,存在資料庫內像是: 伃 瀏覽器顯示出來,會是人字旁的 伃 。 我的工作得把在另一套舊系統內,用非Unicode造字的姓名找出來。當初公司本來採用另一套造字管理程式。由於這些字的內碼沒有規則,對電腦而言跟天書沒兩樣,只能利用windows的輸入法整合器手寫,找到跟unicode內一致或相近的字體,丟到網路上查出Html Entity,再回存到資料庫。 現在機器學習成為顯學,本來想過要寫套圖形辨識來比對特徵,把舊有難字轉成圖片,找出unicode的字。後來發現實際執行上人工搜尋雖然笨,但已能滿足需求,只好把自動辨識的  side project  先擱在一邊了。 另外,必須找一部xp跟一部win7以上電腦做比較,確認big5的欄位有沒有字是混到unicode?要確認未來舊的難字系統關閉後,能不能忠實呈現難字。 一定有同行質疑,新系統的值幹嘛不直接存unicode?主要還是要考慮其他人用舊系統回溯查詢的問題。新的系統帶unicode,舊系統帶存有 html entity的值的欄位。這是又大又複雜的系統,所不得不做的考量。 由unicode的字查Html Entity,可以用轉換的;少量可以單筆試手氣,如: http://jicheng.tw/hanzi/search.php Html Entity 的大全集可再下面找到: http://jdawiseman.com/papers/trivia/character-entities-lots.html 此外,在網頁顯示時,瀏覽器會自動轉換成unicode顯示,但在匯轉成excel或csv時,帶出這樣的值會被當成亂碼。在C# 中,必須將其加以處理,但要注意的是,考慮專案跨平台的可能性,不要呼叫  HttpUtility.HtmlDecode , 而是使用 System.Net.WebUtility.HtmlDecode(texts); 可以得到相同結果,但有比較大的彈性。 參考出處: https://stackoverflow.com/questions...