简体中文与繁体中文互转
一. BIG5编码, GB编码(GB2312, GBK, ...), Unicode编码, UTF编码
1.1. BIG5编码
BIG5字集是台湾繁体字集,共包括国标繁体汉字13053个
1.2. GB编码
GB2312字集是简体字集, 全称为GB2312(80)字集, 共包括国标简体汉字6763个;
GB2312是中国规定的汉字编码, 也可以说是简体中文的字符集编码;
GBK包含全部中文字符;
GBK字集是简繁字集, 包括了GB的字集, BIG5的字集和一些符号, 共包括21003个字符;
GBK是GB2312的扩展, 除了兼容GB2312外, 它还能显示繁体中文, 还有日文的假名;
GBK标准, 他兼容GB2312标准, 同时在GB2312标准的基础上扩展了GB13000包含的字;
注意:
1. GBK字集是简繁字集, 包括了GB字集, BIG5字集和一些符号; 例如BIG5编码能够表示XX汉字, GBK编码也能够表示XX汉字, 但是XX汉字的BIG5编码与GBK编码是不同的.
2. GBK编码兼容GB2312编码, 例如GB2312编码能够表示YY汉字, 那么GBK编码也能够表示YY汉字, 而且YY汉字的GB2312编码与GBK编码是相同的.
3. 也就是说"包含"与"兼容"是两回事来的.
1.3. Unicode编码
Unicode也是一种字符编码方法, 由国际组织设计, 可以容纳全世界所有语言文字的编码方案. Unicode的学名是"UniversalMultiple-Octet Coded Character Set". 简称为UCS。UCS可以看作是"Unicode CharacterSet"的缩写.
1.4. UTF编码
UTF编码是对Unicode编码的存储(传输)规则(不是对文字的编码规则).
二. 简体中文与繁体中文
1. 简体中文是使用GB2312编码的; 台湾繁体中文使用BIG5编码; 而GBK编码既包含简体中文, 也包含了繁体中文;
2. 所以, 要表示简体中文, 你可以使用GB2312编码和GBK编码; 要表示繁体中文, 你可以使用BIG5编码和GBK编码;
3. 通常, 如果在简体中文操作系统中使用的繁体字, 选GBK码繁体中文; 如果在繁体中文操作系统使用繁体字, 选BIG5码繁体中文;
三. 繁简体中文的互转
我自己使用Window系统就是使用GBK编码简体中文系统.
例子: char* p = "你好, 中国";
1. 这里就是使用GBK编码简体部分(就是GB2312编码)(本地操作系统的编码);
2. 如果"你好, 中国"转换成繁体, 你需要使用GBK编码的繁体部分或者使用BIG5编码;
四. 整理一下思路
1. 简体中文可以用哪些编码实现: GBK编码简体部分, Unicode编码简体部分, GB2312编码;
2. 繁体中文可以用哪些编码实现: GBK编码繁体部分, Unicode编码繁体部分, BIG5编码;
3. 所以繁简中文互换有这些途径(GBK编码简体部分和GB2312编码可以认为是同一个东西):
a. GBK编码简体部分<->GBK编码繁体部分b. GBK编码简体部分<->Unicode编码繁体部分c. GBK编码简体部分<->BIG5编码d. Unicode编码简体部分<->GBK编码繁体部分e. Unicode编码简体部分<->Unicode编码繁体部分f. Unicode编码简体部分<->BIG5编码
4. 其中编码实现时, "GBK编码<->BIG5编码"需要这样子(通过Unicode作为中间人): GBK编码<->Unicode编码<->BIG5编码, 所以有:
A. GBK编码简体部分<->GBK编码繁体部分 变成: GBK编码简体部分<--LCMapStringA-->GBK编码繁体部分B. GBK编码简体部分<->Unicode编码繁体部分 变成: GBK编码简体部分<--LCMapStringA-->GBK编码繁体部分<->Unicode编码繁体部分C. GBK编码简体部分<->BIG5编码 变成: GBK编码简体部分<--LCMapStringA-->GBK编码繁体部分<->Unicode编码繁体部分<->BIG5编码D. Unicode编码简体部分<->GBK编码繁体部分 变成: Unicode编码简体部分<->GBK编码简体部分<--LCMapStringA-->GBK编码繁体部分E. Unicode编码简体部分<->Unicode编码繁体部分 变成: Unicode编码简体部分<->GBK编码简体部分<--LCMapStringA-->GBK编码繁体部分<->Unicode编码繁体部分F. Unicode编码简体部分<->BIG5编码 变成: Unicode编码简体部分<->GBK编码简体部分<--LCMapStringA-->GBK编码繁体部分<->Unicode编码繁体部分<->BIG5编码
5. 简化一下: 因为GBK包含了简体中文和繁体中文, 所以只使用A. GBK编码简体部分<->GBK编码繁体部分, 然后其他的编码方式, 喜欢怎么转就怎么转.
参考: http://blog.csdn.net/bagboy_taobao_com/article/details/8594466
五. 实现
// #define LCMAP_SIMPLIFIED_CHINESE 0x02000000 // map traditional chinese to simplified chinese
// #define LCMAP_TRADITIONAL_CHINESE 0x04000000 // map simplified chinese to traditional chinese
char* TSTransform(const char* pStrSrc, int nToTS)
{LCID lcid = MAKELCID(MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED),SORT_CHINESE_PRC);int nLength = LCMapStringA(lcid, nToTS, pStrSrc, -1, NULL, 0);char* pBuffer = new char[nLength + 1];memset(pBuffer, 0, nLength + 1);LCMapStringA(lcid, nToTS, pStrSrc, -1, pBuffer, nLength); // 繁体转简体return pBuffer;
}// 繁体中文转换成简体中文(基于GBK编码)
char* TraditionalToSimplified(const char* pStrTraditional)
{return TSTransform(pStrTraditional, LCMAP_SIMPLIFIED_CHINESE);
}// 简体中文转换成繁体中文(基于GBK编码)
char* SimplifiedToTraditional(const char* pStrSimplified)
{return TSTransform(pStrSimplified, LCMAP_TRADITIONAL_CHINESE);
}int _tmain(int argc, _TCHAR* argv[])
{std::string strGB2312 = "你好, 中国!";char* pS = SimplifiedToTraditional(strGB2312.c_str());char* pT = TraditionalToSimplified(pS); return 0;
}
文档说明:
http://msdn.microsoft.com/en-us/library/cc233968.aspx
http://msdn.microsoft.com/en-us/library/dd318700(VS.85).aspx
另看:
编码了解: http://blog.csdn.net/bagboy_taobao_com/article/details/42294097
编码转换实现代码: http://blog.csdn.net/bagboy_taobao_com/article/details/8594466
简体中文与繁体中文互转相关推荐
- 简体中文转换为繁体中文
<? /*********************************************************************** ...
- 简体中文与繁体中文之间的转换
刚开发玩的一个项目要将简体中文转换为繁体中文并生成txt文档传送到服务器,但是之前一直没接触过,这次算是费尽周折总算搞定! 今天把这个总结一下保存下来方便以后的查询,也方便大家共同进步 首相是将简体中 ...
- java获取系统语言(区分简体中文和繁体中文)
2019独角兽企业重金招聘Python工程师标准>>> 之前做android应用时遇到过一个问题,就是根据语言的不同而显示不同的内容 网上很多代码都是错误的,起码无法区分简体和繁体, ...
- html代码复制繁体,JavaScript_简体中文转换繁体中文(实现代码),复制代码 代码如下:var Default_is - phpStudy...
简体中文转换繁体中文(实现代码) var Default_isFT = 0 //默认是否繁体,0-简体,1-繁体 var StranIt_Delay = 50 //翻译延时毫秒(设这个的 ...
- opencc解决简体中文与繁体中文转换问题【python】
1.Opencc-python 今天学习文本分析中偶然想到繁体中文要如何分割的问题,于是联想到将繁体中文先转换为简体中文,查过网上的资料后发现比较好用的是opencc-python,以及下载zh_wi ...
- php 简转繁体,PHP_简体中文转换为繁体中文的PHP函数,感谢网友Keyes提供移植用的Delph - phpStudy...
简体中文转换为繁体中文的PHP函数 感谢网友Keyes提供移植用的Delphi源代码.其调用方式为$txt=gbtobig5($txt). (注:源代码中的include "data_gb. ...
- java判断简体和繁体字_java获取系统语言(区分简体中文和繁体中文) | 学步园...
之前做android应用时遇到过一个问题,就是根据语言的不同而显示不同的内容 网上很多代码都是错误的,起码无法区分简体和繁体,这里给出一种方法 不涉及android任何知识,所以就归类到java这边了 ...
- Camunda Modeler汉化添加简体中文和繁体中文支持
Camunda Modeler官方是只支持英文的,通过多语言插件是可以实现多语言支持的,方法如下: 1.首先Camunda Modeler的安装目录,camunda-modeler-4.12.0-wi ...
- java 取系统语言_java获取系统语言(区分简体中文和繁体中文) .
之前做android应用时遇到过一个问题,就是根据语言的不同而显示不同的内容 网上很多代码都是错误的,起码无法区分简体和繁体,这里给出一种方法 不涉及android任何知识,所以就归类到java这边了 ...
最新文章
- Mybatis操作主体流程
- 以array开头的php函数,PHP函数、数组
- Struts2.3.4.1+Spring3.2.3+Hibernate4.1.9整合
- 江南山区腊味香 年味浓
- 数据中心加速,一文说清FPGA与GPU、ASIC目前的竞争格局
- 讲故事的用户故事样例之1
- icmp消息类型报告传输_ICMP消息的类型和ICMP消息格式
- DevOps交付模式下,软件测试的那些事
- Json——使用Json jar包实现Json字符串与Java对象或集合之间的互相转换
- Pyhont 高阶函数
- 阶段3 3.SpringMVC·_07.SSM整合案例_01.ssm整合说明
- 活动回顾 | 大咖云集“开源安全治理模型和工具”线上研讨会
- 软件充值功能测试点有哪些?以手机话费充值为例
- 按Right-BICEP的测试用例
- c++ struct 中定义函数
- C++学习笔记:fstream,ifstream和oftream的区别
- python计算化学浓度_计算化学操作流程-孙磊.pdf
- 2022年山东省安全员C证考试题及在线模拟考试
- 每日辣评:华为麦芒8溢价太高?百度又有高层即将离职?
- 移动通信网络规划:室内覆盖系统概述