asp.net 汉字转拼音

需求背景:

昨天遇到个问题,就是面对系统中集中性的要设置大批量的用户设置默认的用户名,密码,权限(角色),同时要求用户名是姓名的全拼,回头看看旁边那个哥们撸胳膊挽袖子准备一个个手动去设置,我眼角不自觉的抽了抽,因为这次需要设置的客户账户只是一百来人,那手动录入完手也得抽筋,何况后续还有八百多号用户要录入,想不通为什么一直没有人提出这个需求。作为一个天天本着每行代码都是奔着去改变世界的程序员来说,这个耍帅的机会怎么能错过,牛逼哄哄的告诉旁边那个哥们,“这活我来...”,然后就有了下面这一系列的问题。回去之前还很刁刁地和家里那位大人说,帮哥们把电脑桌整理出来,我今天晚上是要加班的人[装过头了]。

实现过程:

  因为之前没有做过这方面的功能,回到家在电脑上草草的找了点资料(说的好像认真找就能找到似的,这么迷信),资料大概:

  穷举汉语拼音和汉字编码,遍历对比找对应的拼音,我自己也找了几个类copy下来试试,测试结果很正,很三观,很容易的迷惑了我,安心的去睡了,第二天,离结果提交还有一天的时间,第二天把代码直接拿到项目中开始写,写完测试一把,结果当大量的人员姓名进入之后,之前说的穷举拼音和汉字编码的bug暴露出来,一百多人大概有十几个人的名字识别不出来,比如,彧,玥,楠,婷(彧 没有出来我其实不怪它,本来我就不认识),中间这些字,看了一下断点,明明找到了编码,就是出不来。唉,我有什么办法,我也很无奈。刚开始以为字确实生僻,就在判断的初始就给程序对应的 拼音(算不算作弊),结果随着暴露出来的解析不了得汉字越来越多,果断放弃了这种方法,还有就是试了一下 穷举 拼音对应的汉字,我认为是穷举了,一大片,就和乱码似的,我也从那篇博文下面看到作者说,看上去不能用,其实挺好用的,我信了你的邪~!

  我怎么这么能啰嗦,上正菜:

  1. vsintlpack1.zip
  2. 下载vsintlpack1.zip后,解压安装其中的CHSPinYinConv.msi,如安装到C:\Program Files\Microsoft Visual Studio International Pack\Simplified Chinese Pin-Yin Conversion Library ,可以看到以下文件。
  3. 在项目中添加引用,在步骤2安装目录下添加引用ChnCharInfo.dll。

  4. 测试代码:类文件
    using Microsoft.International.Converters.PinYinConverter;
    
    namespace XLZF.Box
    {
    public class PinyinHelper
    {
    //返回字符串的简拼
    public string getSimplePinYin(string inputTxt)
    {
    string shortR = "";
    foreach (char cin in inputTxt.Trim())
    {
    ChineseChar chineseChar = new ChineseChar(cin);
    shortR += chineseChar.Pinyins[].Substring(, ).ToLower();
    }
    return shortR;
    } //返回字符串全拼
    public string getAllPinYin(string inputTxt)
    {
    string allR = "";
    foreach (char cin in inputTxt.Trim())
    {
    ChineseChar chineseChar = new ChineseChar(cin);
    allR += chineseChar.Pinyins[].Substring(, chineseChar.Pinyins[].Length - ).ToLower();
    }
    return allR;
    }
    } }
  5. 页面后台:
    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);
    }
  6. 页面前台:
    <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>
  7. 结果截图:
  8. 这个是微软老大出的一个DLL,但是类似刚才遇到的有些多音字,尤其是姓氏,翻译错了,真的特尴尬。确保出拼音这块没什么问题了加上权限一些问题,磨磨唧唧的既然晚上12点了,骑上小电驴冒着深秋的寒风加上浓浓的雾气回家。
  9. 以上部分 转自 :狼人666

  

  

  

asp.net 汉字转拼音的车祸现场的更多相关文章

  1. asp.net 汉字转拼音类

    前段时间公司人员反应OA里的汉字拼音首字母不准他们又要用,没办法自己就从网上搜有没有好的,看了很多都是首字母拼不出来或有些字母变为另一个,但最后找了很多还是有一个好用的,暂未发现有不准的. using ...

  2. ASP汉字转拼音函数的方法

    <% 'ASP汉字转拼音函数 Set d = CreateObject("Scripting.Dictionary") d.add "a",-20319 ...

  3. Asp.Net 之 汉字转拼音

    1.利用微软提供的拼音库,计算出汉字的拼音的方法,此方法支持多音字符 下载 Visual Studio International Pack类库,该类库扩展了.NET Framework对全球化软件开 ...

  4. Microsoft Visual Studio International Pack 1.0 SR1--关于汉字转拼音

    Microsoft Visual Studio International Pack 1.0 SR1————微软的一个类库 地址:http://www.microsoft.com/zh-cn/down ...

  5. iOS 汉字的拼音

    获取汉字的拼音 #import <Foundation/Foundation.h> @interface NSString (Utils) /** * 汉字的拼音 * * @return ...

  6. JavaScript 汉字与拼音互转终极方案 附JS拼音输入法

    转:http://www.codeceo.com/article/javascript-pinyin.html 前言 网上关于JS实现汉字和拼音互转的文章很多,但是比较杂乱,都是互相抄来抄去,而且有的 ...

  7. SQL汉字转拼音函数-支持首字母、全拼

    SQL汉字转拼音函数-支持首字母.全拼 FROM :http://my.oschina.net/ind/blog/191659 作者不详 --方法一sqlserver汉字转拼音首字母 --调用方法 s ...

  8. 【干货】JS版汉字与拼音互转终极方案,附简单的JS拼音输入法

    前言 网上关于JS实现汉字和拼音互转的文章很多,但是比较杂乱,都是互相抄来抄去,而且有的不支持多音字,有的不支持声调,有的字典文件太大,还比如有时候我仅仅是需要获取汉字拼音首字母却要引入200kb的字 ...

  9. C#汉字转拼音(支持多音字)

    之前由于项目需要,中间需要一个汉字转拼音和首拼的功能来做查询,感觉这种功能基本已经成熟化了,于是查找了相关的代码,首先引入眼帘的是下面两篇文章 1.C# 汉字转拼音(支持GB2312字符集中所有汉字) ...

随机推荐

  1. python程序执行原理

    Python程序的执行原理 1. 过程概述 Python先把代码(.py文件)编译成字节码,交给字节码虚拟机,然后解释器一条一条执行字节码指令,从而完成程序的执行. 1.1python先把代码(.py ...

  2. Python 对象初识

    # Demo1class Penson: animal = 'big mom' plant = 'flower' def __init__(self,name,age,sex,job): self.n ...

  3. 限制input 内部字数

    当输入字数多于限定值后,输入框显示不出来多出的字符 对于input来说,innerHTML 不能查询和更改,只能用value 来 size 属性规定输入字段的宽度 size 属性定义的是可见的字符数 ...

  4. Java NIO(二)缓冲区

    概念 缓冲区:一个用于特定基本数据类型的容器,由java.nio包定义的所有缓冲区都是Buffer抽象类的子类.其作用于与NIO的通道进行交互,数据从通道读入缓冲区,数据从缓冲区写入通道 Buffer ...

  5. Linux中设置vim自动在运算符号两边加上空格

    vim中设置自动在=+-之类的运算符号左右两边加上空格.原版的vim不带这个功能,写出的代码例如z=x+y,不美观,很多编译器(如VS)能够自动在符号两边加上空格,如z = x + y,看起来比较美观 ...

  6. thinkphp 5 count()方法在控制器,模板中的使用方法

    thinkphp中关于count()方法的使用: 控制器中:echo count($arr)模板中:{$arr | count}模板中if判断语句中 <if condition="co ...

  7. Unity5.0 状态机新增的entry/exit

    相关官方日志 https://blogs.unity3d.com/cn/2014/06/26/shiny-new-animation-features-in-unity-5-0/

  8. day09-3 数据类型总结,深浅拷贝

    目录 数据类型总结,深浅拷贝 存一个值还是多个值 有序 or 无序 可变 or 不可变 浅拷贝和深拷贝的区别(只针对可变类型) 1.拷贝: 3.深拷贝 总结: 数据类型总结,深浅拷贝 存一个值还是多个 ...

  9. html css 样式中100%width 仍有白边解决办法

    把 <body >改成<body style="margin=0%">

  10. Python_study_day_1_while_if

    1.什么是计算机 cpu:大脑 3GHz 内存:缓冲硬盘和cpu,提高计算机运算速度 硬盘:存储数据 2.编程语言的简单分类 编译型,解释型,混合型 3.python是什么编程语言 解释类语言 //. ...