(已经安装解压后的dll ,请添加至项目bin下)
https://files.cnblogs.com/Fooo/Microsoft_Visual_Studio_International_Pack_1.0.rar
2009年3月31日,微软发布了 Microsoft Visual Studio International Pack 1.0 SR1。Visual Studio International Pack 包含一组类库,该类库扩展了.NET Framework对全球化软件开发的支持。使用该类库提供的类,.NET 开发人员可以更方便的创建支持多文化多语言的软件应用。下载地址是:http://www.microsoft.com/downloads/details.aspx?FamilyID=44cac7f0-633b-477d-aed2-99aee642fc10&DisplayLang=zh-cn 该软件包1.0版提供下面七个组件以增强.NET Framework对全球化软件应用开发的支持。
- East Asia Numeric Formatting Library - 支持将小写的数字字符串格式化成简体中文,繁体中文,日文和韩文的大写数字字符串。
- Japanese Kana Conversion Library - 支持将日文假名(Kana)转化为另一种日文字符。
- Japanese Text Alignment Library - 支持日文特有的一种对齐格式。
- Japanese Yomi Auto-Completion Library - 类库支持感知日文输入法的输入自动完成和一个文本框控件的示例。
- Korean Auto Complete TextBox Control - 支持韩文输入法的智能感知和输入自动完成的文本框控件。
- Simplified Chinese Pin-Yin Conversion Library - 支持获取简体中文字符的常用属性比如拼音,多音字,同音字,笔画数。
- Traditional Chinese to Simplified Chinese Conversion Library and Add-In Tool - 支持简繁体中文之间的转换。该组件还包含一个Visual Studio集成开发环境中的插件(Add-in)支持简繁体中文资源文件之间的转换。
下载完毕后,进行解压,里面有7个msi文件,其中:CHSPinYinConv.msi就是汉字拼音相关的,CHTCHSConv.msi是进行简体与繁体进行相互转换的,值安装这2个msi即可。安装完毕后,需要在VS里添加引用,分别引用:C:\Program Files\Microsoft Visual Studio International Pack\Simplified Chinese Pin-Yin Conversion Library下和C:\Program Files\Microsoft Visual Studio International Pack\Traditional Chinese to Simplified Chinese Conversion Library and Add-In Tool下的dll即可使用。下面是一个汉字“中”的测试例子:
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.International.Converters.PinYinConverter;
using Microsoft.International.Converters.TraditionalChineseToSimplifiedConverter;
using System.Collections.ObjectModel;
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
ChineseChar chineseChar = new ChineseChar(System.Char.Parse("我"));
Response.Write("<h2>关于汉字 “中” 的相关信息:</h2>");
Response.Write("<li>“中”笔画数:" + ChineseChar.GetStrokeNumber('中'));
Response.Write("<li>“中”是否是多音字: " + chineseChar.IsPolyphone);
ReadOnlyCollection<string> pinyin = chineseChar.Pinyins;
Response.Write("<li>“中”所有拼音:");
foreach (string pin in pinyin)
{
Response.Write(pin + ",");
}
char[] ChineseChars;
Response.Write("<li>所有拼音 MENG1 的汉字<br/>");
ChineseChars = ChineseChar.GetChars("MENG1");
Response.Write("共" + ChineseChars.Length.ToString() + "个,分别是:");
for (int i = 0; i < ChineseChars.Length; i++)
{
Response.Write(ChineseChars[i] + ",");
}
String simText = "中国人";
String traText = ChineseConverter.Convert(simText, ChineseConversionDirection.SimplifiedToTraditional);
Response.Write("<li>繁简转换测试:" + traText);
}
}
封装了简体中文的读音和笔画等基本信息。
成员类型 | 成员 | 描述 |
---|---|---|
ChineseCharNew(Char) |
ChineseChar类的构造函数。
|
|
ChineseCharacter |
获取这个汉字字符。
|
|
CompareStrokeNumber(Char) |
将给出的字符和实例字符的笔画数进行比较。
|
|
静态成员 | GetCharCount(Int16) |
检索具有指定笔画数的字符个数。
|
静态成员 | GetChars(String) |
获取给定拼音的所有同音字。
|
静态成员 | GetChars(Int16) |
检索具有指定笔画数的所有字符串。
|
静态成员 | GetHomophoneCount(String) |
检索具有指定拼音的字符数。
|
静态成员 | GetStrokeNumber(Char) |
检索指定字符的笔画数。
|
HasSound(String) |
识别字符是否有指定的读音。
|
|
IsHomophone(Char) |
识别给出的字符是否是实例字符的同音字。
|
|
静态成员 | IsHomophone(Char, Char) |
识别给出的两个字符是否是同音字。
|
IsPolyphone |
获取这个字符是否是多音字。
|
|
静态成员 | IsValidChar(Char) |
识别给出的字符串是否是一个有效的汉字字符。
|
静态成员 | IsValidPinyin(String) |
识别给出的拼音是否是一个有效的拼音字符串。
|
静态成员 | IsValidStrokeNumber(Int16) |
识别给出的笔画数是否是一个有效的笔画数。
|
PinyinCount |
获取这个字符的拼音个数。
|
|
Pinyins |
获取这个字符的拼音。
|
|
StrokeNumber |
获取这个字符的笔画数。
|
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.International.Converters.PinYinConverter;
using System.Collections.ObjectModel;
using System.Text;
/// <summary>
/// PinYinConverter 的摘要说明
/// </summary>
public class PinYinConverter
{
/// <summary>
/// 将字符串转换成拼音
/// </summary>
/// <param name="chineseStr">姓名字符串</param>
/// <param name="includeTone">是否包含音调</param>
/// <returns></returns>
public static string ConvertToPinYin(string chineseStr, bool includeTone)
{
if (chineseStr == null)
throw new ArgumentNullException("chineseStr");
char[] charArray = chineseStr.ToCharArray();
StringBuilder sb = new StringBuilder();
foreach (char c in charArray)
{
ChineseChar chineseChar = new ChineseChar(c);
ReadOnlyCollection<string> pyColl = chineseChar.Pinyins;
foreach (string py in pyColl)
{
sb.Append(py);
}
}
if (!includeTone)
{
StringBuilder sb2 = new StringBuilder();
foreach (char c in sb.ToString())
{
if (!char.IsNumber(c))
sb2.Append(c);
}
return sb2.ToString();
}
return sb.ToString();
}
public static string ConvertToPinYin(string chineseStr)
{
//return ConvertToPinYin(chineseStr, true);
return ConvertToPinYin(chineseStr, false);
}
public static bool IsValidChar(char ch)
{
return ChineseChar.IsValidChar(ch);
}
/// <summary>
/// 是否为有效的中文字
/// </summary>
/// <param name="chn"></param>
/// <returns></returns>
public static bool IsValidChinese(string chn)
{
if (chn == null)
throw new ArgumentNullException("chn");
foreach (char c in chn)
{
if (!IsValidChar(c))
return false;
}
return true;
}
}
根据ChnCharInfo.dll 类,自己再封装一个自定义的汉转首个字母类。
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.International.Converters.PinYinConverter;
using System.Collections.ObjectModel;
using System.Text;
using System.Text.RegularExpressions;
/// <summary>
/// 汉字转拼音类
/// </summary>
public class PinYinConver
{
public PinYinConver()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
/// <summary>
/// 把汉字转换成拼音(全拼)
/// by
/// </summary>
/// <param name="hzString">汉字字符串</param>
/// <returns>转换后的拼音(全拼)字符串</returns>
public static string Convert(string hzString)
{
if (string.IsNullOrEmpty(hzString))
return "";
char[] noWChar = hzString.ToCharArray();
string txt = "";
for (int j = 0; j < noWChar.Length; j++)
{
if (IsValidChar(noWChar[j]))
{
txt += ConvertToFirstPinYin(noWChar[j].ToString());
}
}
return txt;
}
/// <summary>
/// 将字符串转换成首个拼音
/// </summary>
/// <param name="chineseStr">字符串</param>
/// <returns></returns>
public static string ConvertToFirstPinYin(string chineseStr)
{
if (chineseStr == null)
return "";
char[] charArray = chineseStr.ToCharArray();
StringBuilder sb = new StringBuilder();
foreach (char c in charArray)
{
ChineseChar chineseChar = new ChineseChar(c);
ReadOnlyCollection<string> pyColl = chineseChar.Pinyins;
foreach (string py in pyColl)
{
if (py != null)
{
sb.Append(py.Substring(0 , 1));
break;
}
}
}
return sb.ToString();
}
/// <summary>
/// 将字符串转换成拼音
/// </summary>
/// <param name="chineseStr">姓名字符串</param>
/// <param name="includeTone">是否包含音调</param>
/// <returns></returns>
public static string ConvertToPinYin(string chineseStr, bool includeTone)
{
if (chineseStr == null)
throw new ArgumentNullException("chineseStr");
char[] charArray = chineseStr.ToCharArray();
StringBuilder sb = new StringBuilder();
foreach (char c in charArray)
{
ChineseChar chineseChar = new ChineseChar(c);
ReadOnlyCollection<string> pyColl = chineseChar.Pinyins;
foreach (string py in pyColl)
{
sb.Append(py);
}
}
if (!includeTone)
{
StringBuilder sb2 = new StringBuilder();
foreach (char c in sb.ToString())
{
if (!char.IsNumber(c))
sb2.Append(c);
}
return sb2.ToString();
}
return sb.ToString();
}
public static string ConvertToPinYin(string chineseStr)
{
return ConvertToPinYin(chineseStr, true);
}
public static bool IsValidChar(char ch)
{
return ChineseChar.IsValidChar(ch);
}
/// <summary>
/// 是否为有效的中文字
/// </summary>
/// <param name="chn"></param>
/// <returns></returns>
public static bool IsValidChinese(string chn)
{
if (chn == null)
return false;
foreach (char c in chn)
{
if (!IsValidChar(c))
return false;
}
return true;
}
}