Big5 = GBK GBK = Big5 GB2312 = GBK GBK = GB2312 互转
本文将介绍四个转换函数分别实现如下的转换:
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]; // 从 GB2312 转到 GBK // 从GB2312 转到 BIG5,通过 GBK 中转 ...... } |
Big5 = GBK GBK = Big5 GB2312 = GBK GBK = GB2312 互转相关推荐
- UTF-8、GB2312、GB18030、GBK和BIG5等字符集编码范围的具体说明
一预备知识 1,字符:字符是抽象的最小文本单位. 它没有固定的形状(可能是一个字形),而且没有值. "A"是一个字符,""(德国.法国和许多其他欧洲国家通用货 ...
- 【图形处理】字模软件与汉字取模(GB2312、GBK,BIG5)(草稿)
由于需要在LCD显示屏上绘制汉字,找了N多的字模软件. 现将个人对汉字取模的实现过程及软件使用写出来,不足之处,望留言指正. 导论 文章将按照汉字编码.图像取模. 一.汉字编码 1234 GB2312 ...
- [zz]GB2312/GBK/GB18030/BIG5 的历史
http://iask.sina.com.cn/b/7837434.html?from=related GBK中的"K"是扩展的意思,而GB2312中的"2312&quo ...
- 一文搞清楚中文编码们:GB2312, GBK, GB18030, Big5
目录 1. GB2312 2. Big5 3. GBK 4. GB18030 5. CJK 前一篇我转载的这个博主的博文:ANSI是什么编码?中有这样一段小故事: 话说计算机是由美国佬搞出来的嘛,他们 ...
- GB2312、GBK、BIG5、Unicode及字符编码基础知识
GB2312.GBK.BIG5.Unicode及字符编码基础知识 在搜狗的设置里面有个选项,要用户选择使用GBK还是GB2312,论坛里面常常有人要求输入法支持BIG5编码,也有人提到 Unicode ...
- GB2312/GBK/GB18030/BIG5 的历史
GBK中的"K"是扩展的意思,而GB2312中的"2312"以及GB18030中的"18030"是国家标准的代号,BIG5是港澳台地区的编码 ...
- CVCode简繁转换的扩展:GBK与Big5转换
CVCode使用码表对照的方式实现简繁转换,在Unicode盛行的今天仍然是有其现实意义的. 较常见的应用是,企业内有台籍员工,也有大陆员工,而且简体和繁体的OS都有使用,这样在MIS系统中如何保 ...
- GB2312、GBK与UTF-8的区别
GB2312.GBK与UTF-8的区别 这是一个异常经典的问题,有无数的新手站长每天都在百度这个问题,而我,作为一个"伪老手"站长,在明白这个这个问题的基础上,有必要详细的解答一下 ...
- 字符集:ASCII、GB2312、GBK、GB18030、Unicode
文章目录 1 字符集.代码点.编码的概念 2 字符集发展的脉络 2.1 最早是ASCII 2.2 各个国家后续推出的编码表 2.3 ANSI到底是什么编码 3 ASCII 3.1 ASCII字符集简介 ...
- 字符集编码详解【ASCII 、GB2312、GBK、GB18030、unicode、UTF-8】(转)
ASCII字符集编码 ASCII码是7位编码,编码范围是0x00-0x7F.ASCII字符集包括英文字母.阿拉伯数字和标点符号等字符.其中0x00-0x20和0x7F共33个控制字符. 只支持ASCI ...
最新文章
- 太任性!17 岁少年买不到回国机票,因“泄愤”攻击航司系统,被判刑 4 年
- 批量关闭电脑有害端口方法
- HU 3496 Watch The Movie---二维费用
- 随机发牌_用Python制作4人扑克牌发牌游戏
- 副本的leader选举
- Speed Reading(POJ-3619 )
- 腾讯云实验之搭建 GIT 服务器教程
- servlet25配置和30
- Fiddler 手机抓包详解
- Jmeter之web压力测试
- 404页面是什么意思?怎么正确设置?
- Flink任务失败,检查点失效:Exceeded checkpoint tolerable failure threshold.
- 中学计算机教师人生职业规划,初中教师个人职业发展规划
- HTML5在线摄像头应用
- CSS-margin外边距
- 微信小程序api的封装使用
- 绝了!多个激光雷达和相机的快速且鲁棒的外参标定方法(代码开源)
- 技巧 | 如何画出漂亮的深度学习模型图
- 安卓studio访问mysql数据库_小白通过JDBC在AndroidStudio一步步来访问MYSQL数据库-Go语言中文社区...
- python版海康摄像头抓拍图片