天天看點

C# 漢語生成拼音(微軟官方方案)

原文: C# 漢語生成拼音(微軟官方方案)

項目開發中使用者的登入名是管理者在背景輸入漢字姓名後自動生成的拼音。例如輸入:張三,則登入名自動生成ZHANGSAN。

我在網上查閱了很多方法:

如:

http://blog.csdn.net/nengzhong/article/details/4210039

 等一些方法,但是在轉換過程中,有些中文它是無法識别的。

于是,又東奔西走,終于在為微軟的官方找到了最佳解決方案:

微軟提供了一個Microsoft Visual Studio International Pack 類庫軟體包,vsintlpack1.zip

其中有一個類庫:Simplified Chinese Pin-Yin Conversion Library 支援擷取簡體中文字元的常用屬性

具體操作:

1、vsintlpack1.zip 下載下傳位址為:

http://www.microsoft.com/downloads/details.aspx?FamilyID=44cac7f0-633b-477d-aed2-99aee642fc10&DisplayLang=zh-cn 2、下載下傳vsintlpack1.zip後,解壓安裝其中的CHSPinYinConv.msi,如安裝到C:\Program Files\Microsoft Visual Studio International Pack\Simplified Chinese Pin-Yin Conversion Library ,可以看到以下檔案。
C# 漢語生成拼音(微軟官方方案)

3、在項目中添加引用,在步驟2安裝目錄下添加引用ChnCharInfo.dll。

     引用成功後如圖:

C# 漢語生成拼音(微軟官方方案)
4 、測試方法如下:
C# 漢語生成拼音(微軟官方方案)

private string ConvertToPinYin(string str)
        {
            string PYstr = "";
            foreach (char item in str.ToCharArray())
            {
                if (Microsoft.International.Converters.PinYinConverter.ChineseChar.IsValidChar(item))
                {
                    Microsoft.International.Converters.PinYinConverter.ChineseChar cc = new Microsoft.International.Converters.PinYinConverter.ChineseChar(item);

                    //PYstr += string.Join("", cc.Pinyins.ToArray());
                    PYstr += cc.Pinyins[0].Substring(0, cc.Pinyins[0].Length - 1);
                    //PYstr += cc.Pinyins[0].Substring(0, cc.Pinyins[0].Length - 1).Substring(0, 1).ToLower();
                }
                else
                {
                    PYstr += item.ToString();
                }
            }
            return PYstr;
        }      
C# 漢語生成拼音(微軟官方方案)