UTF-8/UNICODE/简体中文/繁体中文之间的转换

简介这几天一直在研究中文的简体和繁体之间的转换问题,网上查了一下资料,在此进行整理和备份。繁体中文有GBK码和BIG5码两种编码,简体中文一般使用的是GB2312编码。这些编码之间的转换基本都是使用下列3个函数:LCMapString、WideCharToMultiByte和MultiByteToWideChar,其中还会牵涉到UNICODE码和UTF-8码这两种编码。GB2312...
摘要由CSDN通过智能技术生成

简介

这几天一直在研究中文的简体和繁体之间的转换问题,网上查了一下资料,在此进行整理和备份。

繁体中文有GBK码和BIG5码两种编码,简体中文一般使用的是GB2312编码。

这些编码之间的转换基本都是使用下列3个函数:LCMapString、WideCharToMultiByte和MultiByteToWideChar,其中还会牵涉到UNICODE码和UTF-8码这两种编码。

GB2312编码与GBK编码可以直接使用LCMapString转换,GB2312编码/GBK编码与BIG5编码则无法直接转换,必须使用UNICODE作为中间编码进行中转。

另外UTF-8编码是网络常用编码,如XML文件和网页基本都是使用这种编码,所以在此也一并研究了一下。

下面是我将GB2312/GBK/BIG5/UNICODE/UTF-8这5种编码之间的转换编写到一个函数的代码。

代码

  1 int Convert(void *sstr, int scp, void **dstr, int dcp)  2 {  3 #define CP_GBK 936  4 #define CP_BIG5 950  5 #define CP_UTF8 65001  6  7 enum { _unicode, _utf8, _gb2312, _gbk, _big5 };  8 enum { _wc2mb, _mb2wc, _sc2tc, _tc2sc };  9  10  LCID lcid;  11 void *src;  12 void *dest;  13 int cch;  14 int scp0;  15 int act;  16  UINT cp;  17  18 if (((scp < _
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值