每日看点!如何利用Windows提供的API函数?三种常见中文内码的转换方法
我们平时常见的三种中文内码是:GB2312(简体中文)、GBK、BIG5(繁体中文)。网上有很多中文内码的专用转换工具。我们碰到由于内码不一致而导致的乱麻问题,用这些工具可以进行相互转换。
(资料图)
但论坛里经常有人问如何在自己的程序中集成这些功能呢?本文将介绍如何利用 Windows 提供的API 函数来实现。转换涉及到的 API 函数主要有两个:MultiByteToWideChar 和 WideCharToMultiByte。有关这两个函数的详细文档请参考 MSDN,本文不再赘述。
本文将介绍四个转换函数分别实现如下的转换: * Big5 => GBK * GBK => Big5 * GB2312 => GBK * GBK => GB2312
有关 GB2312 =〉BIG5 的转换以及 BIG5 =〉GB2312 的转换可以通过 GBK 间接实现。先将 GB2312 转成 GBK,再将 GBK 转成 BIG5,反之亦然。当然也可以自己实现它们之间的直接转换。 // Big5 => GBK: void BIG52GBK(char *szBuf) { if(!strcmp(szBuf, ""))
return; int nStrLen = strlen(szBuf); wchar_t *pws = new wchar_t[nStrLen + 1]; try {
int nReturn = MultiByteToWideChar(950, 0, szBuf, nStrLen, pws, nStrLen + 1);
BOOL bValue = false;
nReturn = WideCharToMultiByte(936, 0, pws, nReturn, szBuf, nStrLen + 1, "?", &bValue);
szBuf[nReturn] = 0; } __finally {
delete[] pws; } } //--------------------------------------------------------------------------- // GBK => Big5 void GBK2BIG5(char *szBuf) {
if(!strcmp(szBuf, ""))
return ; int nStrLen = strlen(szBuf); wchar_t *pws = new wchar_t[nStrLen + 1]; __try {
MultiByteToWideChar(936, 0, szBuf, nStrLen, pws, nStrLen + 1);
BOOL bValue = false;
WideCharToMultiByte(950, 0, pws, nStrLen, szBuf, nStrLen + 1, "?", &bValue);
szBuf[nStrLen] = 0; } __finally {
delete[] pws; } } //---------------------------------------------------------------------------- // GB2312 => GBK void GB2GBK(char *szBuf) { if(!strcmp(szBuf, ""))
return; int nStrLen = strlen(szBuf); WORD wLCID = MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), SORT_CHINESE_PRC); int nReturn = LCMapString(wLCID, LCMAP_TRADITIONAL_CHINESE, szBuf, nStrLen, NULL, 0); if(!nReturn)
return; char *pcBuf = new char[nReturn + 1]; __try {
wLCID = MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), SORT_CHINESE_PRC);
LCMapString(wLCID, LCMAP_TRADITIONAL_CHINESE, szBuf, nReturn, pcBuf, nReturn + 1);
strncpy(szBuf, pcBuf, nReturn); } __finally {
delete[] pcBuf; } }
//--------------------------------------------------------------------------- // GBK =〉GB2312 void GBK2GB(char *szBuf) { if(!strcmp(szBuf, ""))
return; int nStrLen = strlen(szBuf); WORD wLCID = MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), SORT_CHINESE_BIG5); int nReturn = LCMapString(wLCID, LCMAP_SIMPLIFIED_CHINESE, szBuf, nStrLen, NULL, 0); if(!nReturn)
return; char *pcBuf = new char[nReturn + 1]; __try {
wLCID = MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), SORT_CHINESE_BIG5);
LCMapString(wLCID, LCMAP_SIMPLIFIED_CHINESE, szBuf, nReturn, pcBuf, nReturn + 1);
strncpy(szBuf, pcBuf, nReturn); } __finally {
delete []pcBuf; } } // 调用示例 ...... char sourceEncode[255]; char szBuf[1024]; // 从 GB2312 转到 GBK strcpy(szBuf, sourceEncode); GB2GBK(szBuf); // 从GB2312 转到 BIG5,通过 GBK 中转 strcpy(szBuf, sourceEncode); GB2GBK(szBuf); GBK2BIG5(szBuf); ...... }
标签:
相关推荐:
最新新闻:
- 电脑输入法为什么打不出汉字?修复一下即可 轻松解决
- dell笔记本电脑驱动怎么样?2020笔记本电脑十大新锐品牌|全球视点
- 每日看点!如何利用Windows提供的API函数?三种常见中文内码的转换方法
- 今日视点:如何改善晚上睡不着?怎样提高深度睡眠时间?五个助眠小妙招帮助你快速入睡
- 如何开通微信商城?开通微信商城的三步步骤
- 今日热讯:电影《饥饿游戏:鸣鸟与蛇之歌》新预告 残酷生存逃杀游戏再启
- 电脑系统还原怎么操作?还原电脑系统的具体操作方法
- 全球快消息!电脑桌面计算机文件打不开怎么办?电脑开机桌面文件都点不开的解决方法
- 《红霞岛》全球解锁时间公布:国区5月2日早上8点
- NFS如何在windows10下使用及挂载?具体方法流程
- 【全球热闻】面对硬盘磁头损坏问题如何解救?硬盘磁头损坏的解决方案
- 《荊棘:群山之王》登陆全平台发售 北欧传说黑暗世界冒险
- 台式机使用笔记本电脑上网怎么设置?解决办法 全球新视野
- 【环球快播报】《洛克人EXE合集》全球销量现已突破100万
- 烫伤图片由一度到三度_烫伤图片 环球速看
- 《装甲核心6》限定收藏版内容公开 机甲雕像精致极品|每日速递
- 世界动态:时组词有哪些_时组词
- 桌面上计算机快捷方式打不开怎么办?桌面快捷方式打不开解决步骤-环球新资讯
- 今日精选:柳工2022年度分配预案:拟10派1元
- 格力手机刷机教程:MIUI-N刷机方法 热头条
- 焦点快报!【新思想引领新征程】生态优先绿色发展 绘就万里长江新图景
- 交银国际:维持比亚迪股份“买入”评级 目标价309.7港元-每日观点
- 当前最新:重生:现在还不是开发《泰坦陨落3》的时候
- 天天热推荐:4月28日江西地区氢氟酸市场价格暂稳
- 中控技术:4月27日融券净卖出2.04万股,连续3日累计净卖出34.45万股
- 全球观点:4月28日福建地区氢氟酸市场价格暂稳
- 南模生物:4月27日融资买入18.97万元,融资融券余额4937.58万元_天天热议
- “榆”见最美花海 满都海公园邀您来打卡
- 猛龙已获得面试几位联盟顶级助教的许可 包括勇士助教阿特金森等
- 到张家界,嗨游“五一”丨全国唯一!张家界100名导游持“急救证”上岗了-环球热讯
- 阳泉:“综合治费”蹚出新路
- 291.58吨!全国黄金消费量一季度大增12%
- 世界快看点丨创意海报丨“五一”旅游攻略手账 带你玩转美丽河北①
- 烟台市芝罘区市场监管局凤凰台市场监管所 “多措并举”开展学校食堂及其周边安全大检查
- 国内油价调价窗口28日开启 “五一”假期前有望下调-世界快报
- 当前简讯:英特尔:一季度营收同比跌36%,环比跌16%至117亿美元
- 黄土高原圈舍里的科技密码 看完让人“羊了个羊”
- 保时捷新款帕拉梅拉曝光!内饰“全面翻新”,比卡宴还要豪华
- 基金增仓助推股价大涨 A股最强板块还能走多远!机构分歧明显加大
- 华纳《哥谭骑士》官方发文或暗示新DLC:大反派集结
- “小李子”新片《花月杀手》新剧照 讲述印第安人谋杀疑案
- “乙类乙管”后的首个“五一”假期,如何安全出游?-今日视点
- 环球时讯:8型中型坦克
- 全国大部分景区应开尽开 多措施确保演出安全 世界消息
- 环球速读:《数码宝贝》20周年剧场版发布,将在明年与海贼王一决高下!
- 环球滚动:表现超预期!亚马逊一季度扭亏为盈 净利32亿美元
- 【全球时快讯】快资讯丨热消息:全球最资讯丨获利筹码比例多少为最佳买入?-当前视点-世界热点|当前消息
- 世界快消息!A股年报展现“靠得住的增长”
- 科创板融资余额减少12.96亿元
- 蛋白粉怎么吃(蛋白粉怎么吃效果最好)
- 首次上涨!碳酸锂止跌企稳?
- 天天时讯:润达医疗(603108)4月27日主力资金净卖出5944.26万元
- 天天简讯:西安经开区建区30年再出发 打造北跨发展先导区
- 万魔 1MORE Aero空间音频降噪耳机京东活动价仅549元!
- 扎哈罗娃:俄将对瑞典驱逐俄外交官作出回应-全球快资讯
- 环球速看:德林海(688069)2023年一季报简析:净利润减595.36%,三费占比上升明显
- 宫本茂感谢《超级马里奥兄弟大电影》媒体差评
- 动态选粉机工作原理_三分离选粉机工作原理
- 报道:邪王的玩宠txt下载_邪王的玩宠
- 天天即时:尼泊尔签发463张登顶珠峰许可证
- 这样的青春够“燃”!大鹏新区举办五四青年节主题活动-每日看点-实时焦点
- 10mm大动圈 万魔蓝牙耳机139元|天天百事通
- 19.7%!去年河北企业工业设备上云率全国第一
- 物业管理费计入什么费用(物业管理费计入什么科目)
- 描写春雨的诗歌作文 描写春雨的诗
- 当前消息!为打击贩毒 拜登宣布美国进入国家紧急状态
- 索尼家用/商用全系显示产品亮相!98寸大电视爽玩PS5_每日消息
- 深壹度丨最高年薪升至65万元,四川是如何成为公务员“聘任”大省的?_当前热议
- 环球观速讯丨邱世卿解析台海开战征兆 吁把握和平之窗
- 龙源电力(00916.HK):4月27日南向资金增持36.6万股_环球速看料
- 热点在线丨外星人主题生存恐怖游戏《灰山事件》新预告片
- 《红霞岛》官方PC系统配置需求公布 推荐2070|今日热讯
- 机甲动作游戏《装甲核心6》新截图公开
- 动画改编《神探加杰特:疯狂时光派对》秋季发售|环球看热讯
- 稳心颗粒三种人不能喝-稳心颗粒的功效与作用