漢字轉拼音貌似一直是C#開發的一個難題,無論什么方案都有一定的bug,之前使用了兩種方案。
1.Chinese2Spell.cs 一些不能識別的漢字全部轉為Z
2.Microsoft Visual Studio International Feature Pack 1.0 連"廣"、“區”都不能轉,很讓人失望。
這些都是2010年以前的方案,至少還有大俠在為漢字轉拼音不斷努力着,目前發現最完美的就是NPINYIN,在googlecode可以看到它的開源項目,http://code.google.com/p/npinyin/
不能識別的字很少,而且還在不斷維護更新,日趨完美,推薦大家使用。
下載地址
dll:http://files.cnblogs.com/files/guohu/NPinyin-0.2.4588.20158-bin.zip
源碼:http://files.cnblogs.com/files/guohu/NPinyin-0.2.x-source_code.zip
v0.2.x的變化
- 1、增加對不同編碼格式文本的支持,同時增加編碼轉換方法Pinyin.ConvertEncoding
- 2、重構單字符拼音的獲取,未找到拼音時返回字符本身.
汪思言 2012年7月23日晚
將中文轉換成拼音全文和首字母的.net 組件。示例:
using System; using System.Collections.Generic; using System.Text; using NPinyin; namespace NPinyinTest { class Program { static void Main(string[] args) { string[] maxims = new string[]{ "事常與人違,事總在人為", "駿馬是跑出來的,強兵是打出來的", "駕馭命運的舵是奮斗。不抱有一絲幻想,不放棄一點機會,不停止一日努力。 ", "如果懼怕前面跌宕的山岩,生命就永遠只能是死水一潭", "懦弱的人只會裹足不前,莽撞的人只能引為燒身,只有真正勇敢的人才能所向披靡" }; string[] medicines = new string[] { "聚維酮碘溶液", "開塞露", "爐甘石洗劑", "苯扎氯銨貼", "魚石脂軟膏", "莫匹羅星軟膏", "紅霉素軟膏", "氫化可的松軟膏", "曲安奈德軟膏", "丁苯羥酸乳膏", "雙氯芬酸二乙胺乳膏", "凍瘡膏", "克霉唑軟膏", "特比奈芬軟膏", "酞丁安軟膏", "咪康唑軟膏、栓劑", "甲硝唑栓", "復方莪術油栓" }; Console.WriteLine("UTF8句子拼音:"); foreach (string s in maxims) { Console.WriteLine("漢字:{0}\n拼音:{1}\n", s, Pinyin.GetPinyin(s)); } Encoding gb2312 = Encoding.GetEncoding("GB2312"); Console.WriteLine("GB2312拼音簡碼:"); foreach (string m in medicines) { string s = Pinyin.ConvertEncoding(m, Encoding.UTF8, gb2312); Console.WriteLine("葯品:{0}\n簡碼:{1}\n", s, Pinyin.GetInitials(s, gb2312)); }