zoukankan      html  css  js  c++  java
  • C#获取汉字拼音和首字母

    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#事件 的讲解
    软件缺陷分析的几种方法
    一个长三角人对深圳的看法 (转)
    一次LoadRunner的CPC考试经历
    测试是一门武功
    ORACLE的性能测试经验总结
    深圳测试协会第九次论坛在深圳举行
    10月28日参加了IBM的产品推介会
    什么是web安全性测试?
  • 原文地址:https://www.cnblogs.com/xuqp/p/11555929.html
Copyright © 2011-2022 走看看