using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace Common
{
//Author:GaoBingBing
public static class ChineseToPinYin
{
private static readonly Dictionary<int, string> CodeCollections = new Dictionary<int, string> {
{ -, "a" }, { -, "ai" }, { -, "an" }, { -, "ang" }, { -, "ao" }, { -, "ba" }, { -, "bai" },
{ -, "ban" }, { -, "bang" }, { -, "bao" }, { -, "bei" }, { -, "ben" }, { -, "beng" }, { -, "bi" }
, { -, "bian" }, { -, "biao" }, { -, "bie" }, { -, "bin" }, { -, "bing" }, { -, "bo" },
{ -, "bu" }, { -, "ca" }, { -, "cai" }, { -, "can" }, { -, "cang" }, { -, "cao" }, { -, "ce" },
{ -, "ceng" }, { -, "cha" }, { -, "chai" }, { -, "chan" }, { -, "chang" }, { -, "chao" },
{ -, "che" }, { -, "chen" }, { -, "cheng" }, { -, "chi" }, { -, "chong" }, { -, "chou" },
{ -, "chu" }, { -, "chuai" }, { -, "chuan" }, { -, "chuang" }, { -, "chui" }, { -, "chun" },
{ -, "chuo" }, { -, "ci" }, { -, "cong" }, { -, "cou" }, { -, "cu" }, { -, "cuan" },
{ -, "cui" }, { -, "cun" }, { -, "cuo" }, { -, "da" }, { -, "dai" }, { -, "dan" }, { -, "dang" },
{ -, "dao" }, { -, "de" }, { -, "deng" }, { -, "di" }, { -, "dian" }, { -, "diao" }, { -, "die" }
, { -, "ding" }, { -, "diu" }, { -, "dong" }, { -, "dou" }, { -, "du" }, { -, "duan" },
{ -, "dui" }, { -, "dun" }, { -, "duo" }, { -, "e" }, { -, "en" }, { -, "er" }, { -, "fa" },
{ -, "fan" }, { -, "fang" }, { -, "fei" }, { -, "fen" }, { -, "feng" }, { -, "fo" }, { -, "fou" }
, { -, "fu" }, { -, "ga" }, { -, "gai" }, { -, "gan" }, { -, "gang" }, { -, "gao" }, { -, "ge" },
{ -, "gei" }, { -, "gen" }, { -, "geng" }, { -, "gong" }, { -, "gou" }, { -, "gu" }, { -, "gua" }
, { -, "guai" }, { -, "guan" }, { -, "guang" }, { -, "gui" }, { -, "gun" }, { -, "guo" },
{ -, "ha" }, { -, "hai" }, { -, "han" }, { -, "hang" }, { -, "hao" }, { -, "he" }, { -, "hei" },
{ -, "hen" }, { -, "heng" }, { -, "hong" }, { -, "hou" }, { -, "hu" }, { -, "hua" },
{ -, "huai" }, { -, "huan" }, { -, "huang" }, { -, "hui" }, { -, "hun" }, { -, "huo" },
{ -, "ji" }, { -, "jia" }, { -, "jian" }, { -, "jiang" }, { -, "jiao" }, { -, "jie" },
{ -, "jin" }, { -, "jing" }, { -, "jiong" }, { -, "jiu" }, { -, "ju" }, { -, "juan" },
{ -, "jue" }, { -, "jun" }, { -, "ka" }, { -, "kai" }, { -, "kan" }, { -, "kang" }, { -, "kao" },
{ -, "ke" }, { -, "ken" }, { -, "keng" }, { -, "kong" }, { -, "kou" }, { -, "ku" }, { -, "kua" }
, { -, "kuai" }, { -, "kuan" }, { -, "kuang" }, { -, "kui" }, { -, "kun" }, { -, "kuo" },
{ -, "la" }, { -, "lai" }, { -, "lan" }, { -, "lang" }, { -, "lao" }, { -, "le" }, { -, "lei" },
{ -, "leng" }, { -, "li" }, { -, "lia" }, { -, "lian" }, { -, "liang" }, { -, "liao" },
{ -, "lie" }, { -, "lin" }, { -, "ling" }, { -, "liu" }, { -, "long" }, { -, "lou" }, { -, "lu" },
{ -, "lv" }, { -, "luan" }, { -, "lue" }, { -, "lun" }, { -, "luo" }, { -, "ma" }, { -, "mai" },
{ -, "man" }, { -, "mang" }, { -, "mao" }, { -, "me" }, { -, "mei" }, { -, "men" },
{ -, "meng" }, { -, "mi" }, { -, "mian" }, { -, "miao" }, { -, "mie" }, { -, "min" },
{ -, "ming" }, { -, "miu" }, { -, "mo" }, { -, "mou" }, { -, "mu" }, { -, "na" }, { -, "nai" },
{ -, "nan" }, { -, "nang" }, { -, "nao" }, { -, "ne" }, { -, "nei" }, { -, "nen" }, { -, "neng" }
, { -, "ni" }, { -, "nian" }, { -, "niang" }, { -, "niao" }, { -, "nie" }, { -, "nin" },
{ -, "ning" }, { -, "niu" }, { -, "nong" }, { -, "nu" }, { -, "nv" }, { -, "nuan" }, { -, "nue" }
, { -, "nuo" }, { -, "o" }, { -, "ou" }, { -, "pa" }, { -, "pai" }, { -, "pan" }, { -, "pang" },
{ -, "pao" }, { -, "pei" }, { -, "pen" }, { -, "peng" }, { -, "pi" }, { -, "pian" },
{ -, "piao" }, { -, "pie" }, { -, "pin" }, { -, "ping" }, { -, "po" }, { -, "pu" }, { -, "qi" },
{ -, "qia" }, { -, "qian" }, { -, "qiang" }, { -, "qiao" }, { -, "qie" }, { -, "qin" },
{ -, "qing" }, { -, "qiong" }, { -, "qiu" }, { -, "qu" }, { -, "quan" }, { -, "que" },
{ -, "qun" }, { -, "ran" }, { -, "rang" }, { -, "rao" }, { -, "re" }, { -, "ren" }, { -, "reng" }
, { -, "ri" }, { -, "rong" }, { -, "rou" }, { -, "ru" }, { -, "ruan" }, { -, "rui" }, { -, "run" }
, { -, "ruo" }, { -, "sa" }, { -, "sai" }, { -, "san" }, { -, "sang" }, { -, "sao" }, { -, "se" }
, { -, "sen" }, { -, "seng" }, { -, "sha" }, { -, "shai" }, { -, "shan" }, { -, "shang" },
{ -, "shao" }, { -, "she" }, { -, "shen" }, { -, "sheng" }, { -, "shi" }, { -, "shou" },
{ -, "shu" }, { -, "shua" }, { -, "shuai" }, { -, "shuan" }, { -, "shuang" }, { -, "shui" },
{ -, "shun" }, { -, "shuo" }, { -, "si" }, { -, "song" }, { -, "sou" }, { -, "su" },
{ -, "suan" }, { -, "sui" }, { -, "sun" }, { -, "suo" }, { -, "ta" }, { -, "tai" }, { -, "tan" },
{ -, "tang" }, { -, "tao" }, { -, "te" }, { -, "teng" }, { -, "ti" }, { -, "tian" },
{ -, "tiao" }, { -, "tie" }, { -, "ting" }, { -, "tong" }, { -, "tou" }, { -, "tu" },
{ -, "tuan" }, { -, "tui" }, { -, "tun" }, { -, "tuo" }, { -, "wa" }, { -, "wai" }, { -, "wan" }
, { -, "wang" }, { -, "wei" }, { -, "wen" }, { -, "weng" }, { -, "wo" }, { -, "wu" }, { -, "xi" }
, { -, "xia" }, { -, "xian" }, { -, "xiang" }, { -, "xiao" }, { -, "xie" }, { -, "xin" },
{ -, "xing" }, { -, "xiong" }, { -, "xiu" }, { -, "xu" }, { -, "xuan" }, { -, "xue" },
{ -, "xun" }, { -, "ya" }, { -, "yan" }, { -, "yang" }, { -, "yao" }, { -, "ye" }, { -, "yi" },
{ -, "yin" }, { -, "ying" }, { -, "yo" }, { -, "yong" }, { -, "you" }, { -, "yu" },
{ -, "yuan" }, { -, "yue" }, { -, "yun" }, { -, "za" }, { -, "zai" }, { -, "zan" },
{ -, "zang" }, { -, "zao" }, { -, "ze" }, { -, "zei" }, { -, "zen" }, { -, "zeng" },
{ -, "zha" }, { -, "zhai" }, { -, "zhan" }, { -, "zhang" }, { -, "zhao" }, { -, "zhe" },
{ -, "zhen" }, { -, "zheng" }, { -, "zhi" }, { -, "zhong" }, { -, "zhou" }, { -, "zhu" },
{ -, "zhua" }, { -, "zhuai" }, { -, "zhuan" }, { -, "zhuang" }, { -, "zhui" }, { -, "zhun" },
{ -, "zhuo" }, { -, "zi" }, { -, "zong" }, { -, "zou" }, { -, "zu" }, { -, "zuan" }, { -, "zui" }
, { -, "zun" }, { -, "zuo" } };
/// <summary>
/// 汉字转拼音
/// </summary>
/// <param name="txt"> 需要转换的汉字 </param>
/// <returns> 返回汉字对应的拼音 </returns>
public static string ToPinYin(string txt)
{
txt = txt.Trim();
byte[] arr = new byte[]; //每个汉字为2字节
StringBuilder result = new StringBuilder();//使用StringBuilder优化字符串连接
int charCode = ;
int arr1 = ;
int arr2 = ;
char[] arrChar = txt.ToCharArray();
for (int j = ; j < arrChar.Length; j++) //遍历输入的字符
{
arr = System.Text.Encoding.Default.GetBytes(arrChar[j].ToString());//根据系统默认编码得到字节码
if (arr.Length == )//如果只有1字节说明该字符不是汉字,结束本次循环
{
result.Append(arrChar[j].ToString());
continue; }
arr1 = (short)(arr[]); //取字节1
arr2 = (short)(arr[]); //取字节2
charCode = arr1 * + arr2 - ;//计算汉字的编码 if (charCode > - || charCode < -) //如果不在汉字编码范围内则不改变
{
result.Append(arrChar[j]);
}
else
{
//根据汉字编码范围查找对应的拼音并保存到结果中
//由于charCode的键不一定存在,所以要找比他更小的键上一个键
if (!CodeCollections.ContainsKey(charCode))
{
for (int i = charCode; i <= ; --i)
{
if (CodeCollections.ContainsKey(i))
{
result.Append( CodeCollections[i]);
break;
}
}
}
else
{
result.Append(CodeCollections[charCode]);
}
}
}
return result.ToString().Trim();
}
}
}

ChineseToPinYin

.NET技术交流群 199281001 .欢迎加入。

C# 汉字转拼音的更多相关文章

  1. iOS 汉字的拼音

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

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

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

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

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

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

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

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

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

  6. C#汉字转拼音(npinyin)将中文转换成拼音全文或首字母

    汉字转拼音貌似一直是C#开发的一个难题,无论什么方案都有一定的bug,之前使用了两种方案. 1.Chinese2Spell.cs 一些不能识别的汉字全部转为Z 2.Microsoft Visual S ...

  7. C#汉字转拼音帮助类

    using System; using System.Collections.Generic; using System.Text; using System.Text.RegularExpressi ...

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

    github项目地址:https://github.com/liuxianan/pinyinjs 完整demo演示:http://demo.liuxianan.com/pinyinjs/ 汉字转拼音: ...

  9. MySQL按照汉字的拼音排序

    按照汉字的拼音排序,用的比较多是在人名的排序中,按照姓氏的拼音字母,从A到Z排序: 如果存储姓名的字段采用的是GBK字符集,那就好办了,因为GBK内码编码时本身就采用了拼音排序的方法(常用一级汉字37 ...

  10. Java汉字转拼音

    import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinCase ...

随机推荐

  1. JSON与JSONP

    JSON JSON:一种用于在浏览器和服务器之间交换信息的基于文本的轻量级数据格式.是JS对象的字符串表示.例如:‘{''name":"aa","age&quo ...

  2. Itextsharp下根据Echarts图像生成pdf

    本文介绍如何在C#中使用ItextSharp生成带echarts图表的pdf 一.生成一个简单的pdf 后台代码 publicActionResultGetPdf() { MemoryStream m ...

  3. 从日常开发说起,浅谈HTTP协议是做什么的。

    引言 HTTP协议作为Web开发的基础一直被大多数人所熟知,不过相信有很多人只知其一不知其二.比如咱们经常用到的session会话机制是如何实现的,可能很多人都说不出来吧.其实session会话就是H ...

  4. js回调

    请先看着一片blog: http://www.jb51.net/article/53027.htm 回调的两种使用方法: 1.一般的传函数.2.匿名函数 3.使用回调函数再使用call方法. 判断一个 ...

  5. linux用户管理命令

    关键字 useradd passwd who w uptime 1.useradd添加用户命令 useradd 用户名 passwd 用户名 (设置密码) 2.userdel 删除用户 userdel ...

  6. 年前辞职-WCF入门学习(4)

    前言 上一篇的学习中碰到一个问题,用地址http://localhost:8080/mex 访问元数据的时候一直提示400 bad request 错误,因为时间太晚了,查了好几遍代码,也没有发现问题 ...

  7. 第二十五课:jQuery.event.trigger的源码解读

    本课主要来讲解jQuery.event.trigger的源码解读. trigger = function(event, data, elem, onlyHandlers){ if(elem & ...

  8. iOS开发小技巧--利用苹果官方API播放视频(方法已经过时,了解一下)

  9. 《疯狂Java:突破程序员基本功的16课》读书笔记-第二章 对象与内存控制

    Java内存管理分为两个方面:内存分配和内存回收.这里的内存分配特指创建Java对象时JVM为该对象在堆内存中所分配的内存空间.内存回收指的是当该Java对象失去引用,变成垃圾时,JVM的垃圾回收机制 ...

  10. 【POJ 2923】Relocation(状压DP+DP)

    题意是给你n个物品,每次两辆车运,容量分别是c1,c2,求最少运送次数.好像不是很好想,我看了网上的题解才做出来.先用状压DP计算i状态下,第一辆可以运送的重量,用该状态的重量总和-第一辆可以运送的, ...