asp.net 漢字轉拼音的車禍現場
asp.net 漢字轉拼音
需求背景:
昨天遇到個問題,就是面對系統中集中性的要設置大批量的用戶設置默認的用戶名,密碼,權限(角色),同時要求用戶名是姓名的全拼,回頭看看旁邊那個哥們擼胳膊挽袖子準備一個個手動去設置,我眼角不自覺的抽了抽,因為這次需要設置的客戶賬戶只是一百來人,那手動錄入完手也得抽筋,何況後續還有八百多號用戶要錄入,想不通為什麽一直沒有人提出這個需求。作為一個天天本著每行代碼都是奔著去改變世界的程序員來說,這個耍帥的機會怎麽能錯過,牛逼哄哄的告訴旁邊那個哥們,“這活我來...”,然後就有了下面這一系列的問題。回去之前還很刁刁地和家裏那位大人說,幫哥們把電腦桌整理出來,我今天晚上是要加班的人[裝過頭了]。
實現過程:
因為之前沒有做過這方面的功能,回到家在電腦上草草的找了點資料(說的好像認真找就能找到似的,這麽迷信),資料大概:
窮舉漢語拼音和漢字編碼,遍歷對比找對應的拼音,我自己也找了幾個類copy下來試試,測試結果很正,很三觀,很容易的迷惑了我,安心的去睡了,第二天,離結果提交還有一天的時間,第二天把代碼直接拿到項目中開始寫,寫完測試一把,結果當大量的人員姓名進入之後,之前說的窮舉拼音和漢字編碼的bug暴露出來,一百多人大概有十幾個人的名字識別不出來,比如,彧,玥,楠,婷(彧 沒有出來我其實不怪它,本來我就不認識),中間這些字,看了一下斷點,明明找到了編碼,就是出不來。唉,我有什麽辦法,我也很無奈。剛開始以為字確實生僻,就在判斷的初始就給程序對應的 拼音(算不算作弊),結果隨著暴露出來的解析不了得漢字越來越多,果斷放棄了這種方法,還有就是試了一下 窮舉 拼音對應的漢字,我認為是窮舉了,一大片,就和亂碼似的,我也從那篇博文下面看到作者說,看上去不能用,其實挺好用的,我信了你的邪~!
我怎麽這麽能啰嗦,上正菜:
- vsintlpack1.zip
- 下載vsintlpack1.zip後,解壓安裝其中的CHSPinYinConv.msi,如安裝到C:\Program Files\Microsoft Visual Studio International Pack\Simplified Chinese Pin-Yin Conversion Library ,可以看到以下文件。
- 在項目中添加引用,在步驟2安裝目錄下添加引用ChnCharInfo.dll。
- 測試代碼:類文件
using Microsoft.International.Converters.PinYinConverter;
- 頁面後臺:
protected void btn_zhuan_Click(object sender, EventArgs e) { PinyinHelper chinapy = new PinyinHelper(); string hanzi = tb_hanzi.Text.Trim(); tb_pingyin.Text = chinapy.getAllPinYin(hanzi); tb_shouzimu.Text = chinapy.getSimplePinYin(hanzi); }
- 頁面前臺:
<div class="row" style="margin-top: 20px;"> <div class="col-md-12"> <div class="col-md-2"> <div class="input-group"> <span class="input-group-addon">漢字</span> <asp:TextBox runat="server" ID="tb_hanzi" CssClass="form-control"></asp:TextBox> </div> </div> <div class="col-md-2"> <div class="input-group"> <span class="input-group-addon">全拼</span> <asp:TextBox runat="server" ID="tb_pingyin" CssClass="form-control"></asp:TextBox> </div> </div> <div class="col-md-2"> <div class="input-group"> <span class="input-group-addon">首字母</span> <asp:TextBox runat="server" ID="tb_shouzimu" CssClass="form-control"></asp:TextBox> </div> </div> <div class="col-md-2"> <asp:Button runat="server" ID="btn_zhuan" CssClass="btn btn-primary" Text="轉換" OnClick="btn_zhuan_Click" /> </div> </div> </div>
- 結果截圖:
- 這個是微軟老大出的一個DLL,但是類似剛才遇到的有些多音字,尤其是姓氏,翻譯錯了,真的特尷尬。確保出拼音這塊沒什麽問題了加上權限一些問題,磨磨唧唧的既然晚上12點了,騎上小電驢冒著深秋的寒風加上濃濃的霧氣回家。
- 以上部分 轉自 :狼人666
asp.net 漢字轉拼音的車禍現場