码迷,mamicode.com
首页 > Windows程序 > 详细

C#获取汉字拼音和首字母

时间:2019-09-20 12:40:05      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:检查   ide   描述   defining   packages   windows   函数   需要   根据   

C#获取汉字拼音和首字母

 

引入NPinyin

using NPinyin;

 

调用

 /// <summary>
        /// 中文首字母大写
        /// </summary>
        /// <param name="str">中文</param>
        /// <returns></returns>
        public String GetSpellCode(string str)
        {
            Encoding gb2312 = Encoding.GetEncoding("GB2312");
            string strA = Pinyin.ConvertEncoding(str, Encoding.UTF8, gb2312);
            //首字母
            string strB = Pinyin.GetInitials(strA, gb2312);
       //拼音
       //string strC = Pinyin.GetPinyin(str);
return strB; }

报错

Unhandled Exception: System.ArgumentException: GB2312 is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.

解决

原因

使用如下代码检查支持的编码:

System.Text.Encoding.GetEncodings();

发现获得的编码中没有GB2312或者GBK。

解决方案

1.

第一步

向项目中添加如下包:

System.Text.Encoding.CodePages

根据 System.Text.Encoding.CodePages nuget主页 的描述,这个包能为程序提供 Windows-1252, Shift-JIS, and GB2312 三种编码。

第二步

根据错误提示,我们需要对引用的编码使用 Encoding.RegisterProvider 函数进行注册。

在使用 System.Text.Encoding.GetEncoding ("GB2312") 之前,在代码中执行:

System.Text.Encoding.RegisterProvider (System.Text.CodePagesEncodingProvider.Instance);

 

注册完之后,获取 GB2312 编码对象就不会报错了,并且可以正常使用其中的函数。

完整代码是:

/// <summary>
        /// 中文首字母大写
        /// </summary>
        /// <param name="str">中文</param>
        /// <returns></returns>
        public String GetSpellCode(string str)
        {
            System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);//注册编码对象
            Encoding gb2312 = Encoding.GetEncoding("GB2312");
            string strA = Pinyin.ConvertEncoding(str, Encoding.UTF8, gb2312);
            //首字母
            string strB = Pinyin.GetInitials(strA, gb2312);
      //拼音 
       //string strC = Pinyin.GetPinyin(str);
      return strB; 
    }

 

参考:https://blog.csdn.net/qq_22103321/article/details/85863879

C#获取汉字拼音和首字母

标签:检查   ide   描述   defining   packages   windows   函数   需要   根据   

原文地址:https://www.cnblogs.com/xuqp/p/11555929.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!