TIPS-還原NCR編碼
5 |
網友Eric問到關於NCR轉換的事,查了一下,發現我過去有介紹過toNCR()的做法,倒沒提到fromNCR(),這裡補上,給有需要的人參考。
程式只有短短幾行,主要靠Regex強大的比對功能解決大部份的難題。一口氣將字串中所有的&#nnnn;抓出來,nnnn轉成整數再轉成char,接著將字串的編碼一一置換掉,搞定!
private string fromNCR(string s)
{
foreach (System.Text.RegularExpressions.Match m
in System.Text.RegularExpressions.Regex.Matches(s,"&#(?<ncr>\\d+?);"))
s = s.Replace(m.Value,
Convert.ToChar(int.Parse(m.Groups["ncr"].Value)).ToString());
return s;
}
Comments
# by garfield
可以做成單獨的執行檔, 讓我們下載使用嗎? 可以用參數方式傳一個檔名來將所有NCR轉成unicode, 其它的文字也順便轉成unicode, 這樣才可以轉成真正的unicode編碼的檔案. 謝謝!
# by HayateYuki
嗯,最好是可以做成NCR、UTF-16LE/BE互轉的命令行程式…… 畢竟很難找到可以轉向NCR的……
# by Ike
黑大您好 有個字無法解,不知道你有沒有什麼辦法? 𩥉 𩥉 原因是 int 吃不下 170313 但 Convert.ToChar() 又不吃 decimal …
# by Ike
更正,是 Convert.ToChar() 吃不下 170313 然後…自己找到方法了 ^^" 把「Convert.ToChar()」 改用「char.ConvertFromUtf32()」就可以了
# by Jeffrey
to lke, 感謝分享。(已筆記)