C语言实现字符串编码从GB2312(ANSI)到UTF-8的转码

 

/* ANSI-UTF-8转换程序     
created by Initial-T 2021-1-26*/

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

//定义输入长度,宽字符长度,utf-8长度
int  in_size,wide_size,utf8_size;

//定义宽字符串与utf-8字符串
wchar_t * wide_string;
char * utf8_string;

main() {

//定义输入值并获取其长度    
char input_string[25]={0};
strcpy(input_string, "规格严格,功夫到家");
in_size= strlen(input_string);


/*映射一个字符串到一个宽字符(unicode)的字符串。由该函数映射的字符串没必要是多字节字符组。
   CP_ACP:ANSI代码页(简体中文Windows操作系统中,ANSI 编码代表 GBK 编码)*/
//先获取宽字符串长度并创建,再以实际值执行函数
wide_size=MultiByteToWideChar(CP_ACP, 0, input_string, in_size, NULL, 0);
wide_string = (wchar_t * ) malloc(wide_size*sizeof(wchar_t));
MultiByteToWideChar(CP_ACP, 0, input_string, in_size, wide_string, wide_size);


/*把宽字符串转换成指定的新的字符串,如ANSI,UTF8等,新字符串不必是多字节字符集。 
   CP_UTF8:使用UTF-8转换*/
utf8_size = WideCharToMultiByte(CP_UTF8, 0, wide_string, wide_size, NULL, 0, NULL, NULL);
utf8_string = (char * ) malloc(utf8_size);
WideCharToMultiByte(CP_U
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值