『QQ:1353814576』

C#在.netcore实现中文汉字笔画计算 获得中文汉字的书写笔画数


今天需要做一个计算汉字笔书写画数功能,网上找了一段流颇广的代码 ,但是代码拷贝下来后运行得到的笔画数始终是-1 (当然并不是说人家提供的代码是错的 .net framework环境下应该是正常的) 经过一番查阅资料资料和测试最终程序得出了正确的笔画数 (原代码百度流传挺广需要的自行搜索)

我的开发环境 Windows10+VS2019+.NET5+C#, .net framework开发的小伙伴应该不会出现这个情况

问题点和解决办法:

  1. 这个方法里面获取字符流的时候使用 System.Text.Encoding.Default 进行转换

就是下面这段代码

byte[] TheArray = System.Text.Encoding.Default.GetBytes(cnWords);
//可以改成这样(**需要Nuget对应安装 System.Text.Encoding.CodePages 这个组件** 不然这段代码会报错)
byte[] TheArray = System.Text.Encoding.GetEncoding("GB2312").GetBytes(ChineseCharacter.Substring(i, 1));
  1. 汉字笔画数计算 使用的是GB2312 与第一项不一致 就会导致下面这段代码返回-1
public static int GetGB2312StrokeCountM(int c1, int c2)
{
			int OffSet;
			if (c1 < 0xB0 || c1 > 0xF7 || c2 < 0xA1 || c2 > 0xFE)
			{
				// 不是一个有效的GB2312汉字字符
				return -1;
			}
			OffSet = (c1 - 0xB0) * (0xFE - 0xA0) + (c2 - 0xA1);
			return ChineseCharacterCountSet[OffSet];
}

以下 是经过微调的代码