C#在.netcore实现中文汉字笔画计算 获得中文汉字的书写笔画数
今天需要做一个计算汉字笔书写画数功能,网上找了一段流颇广的代码 ,但是代码拷贝下来后运行得到的笔画数始终是-1 (当然并不是说人家提供的代码是错的 .net framework环境下应该是正常的) 经过一番查阅资料资料和测试最终程序得出了正确的笔画数 (原代码百度流传挺广需要的自行搜索)
我的开发环境 Windows10+VS2019+.NET5+C#, .net framework开发的小伙伴应该不会出现这个情况
问题点和解决办法:
- 这个方法里面获取字符流的时候使用 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));
- 汉字笔画数计算 使用的是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];
}