UTF-8 转 Unicode, Unicode 转 GBK, UTF-8 转 GBK

本文介绍了一个简单的字符编码转换示例,演示如何使用Windows API将UTF-8编码转换为Unicode,再进一步转换为GBK编码的过程。通过具体的代码实现,读者可以了解到不同编码之间的转换方法。

UTF-8   转   Unicode,   Unicode   转   GBK,   UTF-8   转   GBK

#include   <windows.h>
#include   <stdio.h>

void   main()   {

//三个不同版本的老徐
unsigned   char   utf8[]   =   "/xe8/x80/x81/xe5/xbe/x90 ";
unsigned   char   unicode[]   =   "/x01/x80/x90/x5f ";
unsigned   char   ansi[]   =   "/xc0/xcf/xd0/xec ";

int   len;  

//UTF-8转UNICODE
len   =   MultiByteToWideChar(CP_UTF8,   0,   (LPCSTR)utf8,   -1,   NULL,0);
WCHAR   *   wszUtf8   =   new   WCHAR[len+1];
memset(wszUtf8,   0,   len   *   2   +   2);
MultiByteToWideChar(CP_UTF8,   0,   (LPCSTR)utf8,   -1,   wszUtf8,   len);

MessageBoxW(NULL,   (const   wchar_t*)wszUtf8,   NULL,   MB_OK);

//UNICODE转ANSI,实际上经过两次转换   UTF-8   已经变成了   GBK   编码
len   =   WideCharToMultiByte(CP_ACP,   0,   wszUtf8,   -1,   NULL,   0,   NULL,   NULL);  
char   *szGBK=new   char[len   +   1];
memset(szGBK,   0,   len   +   1);
WideCharToMultiByte   (CP_ACP,   0,   wszUtf8,   -1,   szGBK,   len,   NULL,NULL);

MessageBoxA(NULL,   (const   char*)szGBK,   NULL,   MB_OK);

delete[]   szGBK;
delete[]   wszUtf8;

}

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值