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#获取汉字拼音和首字母的更多相关文章

  1. ASP.NET获取汉字拼音的首字母

    代码 #region GetChineseSpell获取汉字拼音的第一个字母 //获取汉字拼音的第一个字母 static public string GetChineseSpell(string st ...

  2. MySQL数据库获取汉字拼音的首字母函数

    需求简介:最近的一个项目,想实现如下图所示的显示效果.很明显,如果能够获取对应的汉字词组的拼音首字母就可以实现了,如果是固定的几个汉字,人为的拼一下就可以了,不过项目中有多处功能是需要这个效果的,并且 ...

  3. sqlserver 获取汉字拼音的首字母(大写)函数

    1:创建函数: USE [test] GO /****** 对象: UserDefinedFunction [dbo].[GetFirstChar] 脚本日期: 02/22/2019 16:39:06 ...

  4. oracle函数获取汉字拼音的首字母

    CREATE OR REPLACE FUNCTION F_TRANS_PINYIN_CAPITAL(P_NAME IN VARCHAR2) RETURN VARCHAR2 AS V_COMPARE V ...

  5. MySQL数据库获取多个汉字拼音的首字母函数

    需求简介:最近的一个项目,想实现如下图所示的显示效果.很明显,如果能够获取对应的汉字词组中每个汉字的拼音首字母就可以实现了,如果是固定的几组汉字,人为的拼一下就可以 了,不过项目中有多处功能需要这个效 ...

  6. C# 汉字转拼音 取汉字拼音的首字母

    using System.Text.RegularExpressions; namespace DotNet.Utilities { /// <summary> /// 汉字转拼音类 // ...

  7. [功能帮助类] C#取汉字拼音的首字母PinYin帮助类 (转载)

    点击下载 PinYin.rar 主要功能就是取汉字拼音的首字母,只要你输入一个汉字,或者是多个汉字就会取出相应的道字母,主要是方便查询使用的 /// <summary> /// 编 码 人 ...

  8. php获取汉字拼音首字母的方法

    现实中我们经常看到这样的说明,排名不分先后,按姓名首字母进行排序.这是中国人大多数使用的排序方法.那么在php程序中该如何操作呢? 下面就分享一下在php程序中获取汉字拼音的首字母的方法,在网上搜到的 ...

  9. 获取汉字拼音 Java

    两种方法:一个是使用btye数组,一个是引入jar包进行操作. 1. public class CharacterParser { private static int[] pyvalue = new ...

随机推荐

  1. PHP 之Mysql优化

    一.建立索引 普通索引 index: 对关键字没有要求. 唯一索引 unique index: 要求关键字不能重复.同时增加唯一约束. 主键索引 primary key: 要求关键字不能重复,也不能为 ...

  2. JavaScript中的内存溢出与内存泄漏

    内存溢出 是一种程序运行出现的错误: 当程序运行需要的内存超过了剩余的内存时, 就出抛出内存溢出的错误 var obj = {} for (var i = 0; i < 100000; i++) ...

  3. VUE中常用的十大过滤器

    在vue的学习过程中,我发现过滤器是一个很好用的工具,过滤器(Filters)来渲染数据是一种很有趣的方式.过滤器不能替代Vue中的methods.computed或者watch,不改变真正的data ...

  4. 京津冀大学生竞赛:babyphp

    京津冀大学生竞赛:babyphp 比赛的时候没做出来,回来以后一会就做出来了,难受...还是基本功不扎实,都不记得__invoke怎么触发的了 放上源码 <?php error_reportin ...

  5. 2019软工实践_Alpha(6/6)

    队名:955 组长博客:https://www.cnblogs.com/cclong/p/11913269.html 作业博客:https://edu.cnblogs.com/campus/fzu/S ...

  6. Calcite分析 - Rule

    Calcite源码分析,参考: http://matt33.com/2019/03/07/apache-calcite-process-flow/ https://matt33.com/2019/03 ...

  7. Web.Config配置文件中customErrors元素的使用方法

    在Web.Config配置文件中,customErrors元素提供有关ASP.NET 应用程序自定义错误消息的信息. 先看一下配置结构的示例: <configuration>   < ...

  8. python 代码性能分析 库

    问题描述 1.Python开发的程序在使用过程中很慢,想确定下是哪段代码比较慢: 2.Python开发的程序在使用过程中占用内存很大,想确定下是哪段代码引起的: 解决方案 使用profile分析分析c ...

  9. gdb命名记录

    gdb常用命令 显示类 info locals 显示当前局部变量 info args 显示当前函数的参数 info sharedlibrary 显示当前程序依赖的动态库 ptype val 打印变量类 ...

  10. python:单元测试框架pytest的一个简单例子

    之前一般做自动化测试用的是unitest框架,发现pytest同样不错,写一个例子感受一下 test_sample.py import cx_Oracle import config from sen ...