網友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

黑大您好 有個字無法解,不知道你有沒有什麼辦法? 𩥉 &#170313; 原因是 int 吃不下 170313 但 Convert.ToChar() 又不吃 decimal …

# by Ike

更正,是 Convert.ToChar() 吃不下 170313 然後…自己找到方法了 ^^" 把「Convert.ToChar()」 改用「char.ConvertFromUtf32()」就可以了

# by Jeffrey

to lke, 感謝分享。(已筆記)

Post a comment