问题碰到这样的需求 , 给定一个中文字符 , 如”中” , 获取其拼音表示 , 如:zhong 。
思路在Unicode开发环境下 , 每一个字符 , 不论它是中文字符 , 还是ASCII字符 , 都是用两个字节表示 。例如:
TCHAR ch1 = _T(‘A’);
这里的ch1的大小是两个字节 , ch1的值为0x0041 。
TCHAR ch2 = _T(‘中’);
这里的ch2的大小是也是两个字节 , ch1的值为0x4E2D 。
想要得到汉字的拼音 , 必须先得到汉字对应的GB2312/GBK机内码 。这里需要注意的是 , Unicode字符集和GB2312/GBK字符集是两套互不兼容的字符编码标准 , 比如”中”字的Unicode编码为0x4E2D , 而它的GB2312/GBK编码为0xD6D0 。
得到汉字对应的GB2312/GBK机内码之后 , 可以通过查询GB2312/GBK标准来得到其对应的拼音了 。
实现方法1) 通过WideCharToMultiByte将Unicode字符集转换为ANSI字符集 。
2) 判断转换的ANSI字符是否是ASCII字符 , 可以使用isascii函数来进行判断 。
3) 如果转换的ANSI字符的高低字节都大于0xA0 , 则表示这是一个中文字符 , 可以通过如下的公式获取其GB2312/GBK机内码 。
chHigh = 高8位字节(中文字符);
chLow = 低8位字节(中文字符);
GBK = (chHigh – 0xA0) * 100 + chLow – 0xA0;
4) 根据GB2312/GBK表查询对应的拼音表示 。
总结对于没有对应关系的两个字符集Unicode和GB2312/GBK来说 , 也只能通过查表的方式找出对应关系了 。
文章插图
【gbk汉字编码查询 gbk内码查询 gbk姓名编码查询】
- lol艾欧尼亚是电几 lol艾欧尼亚 lol艾欧尼亚查询
- 华为手机购买时间和激活时间不一样 华为手机购买时间查询
- 手机号机主姓名查询软件 手机号机主姓名查询 如何查手机号机主姓名
- 上海南站高铁时刻表查询 上海南站有高铁吗
- 邮政储蓄银行查询余额怎么查 邮政储蓄银行查询 邮政储蓄银行明细查询
- 加运美快递单号查询官网 加运美单号查询 加运美速递查询单号
- 淘宝宝贝关键词排名查询 淘宝关键词查询 照妖镜淘宝查号免费
- 美国德克萨斯州的邮编是什么? 德克萨斯州邮编 邮编查询
- 深圳劳动保障网个人社保信息查询 深圳劳动保障网 深圳劳动局在线咨询
- 民教网学历查询入口 民教网学历查询 个人学历查询