首页 > 编程知识 正文

linux utf8转gbk,c语言utf8转gbk

时间:2023-05-03 14:57:24 阅读:175933 作者:3594

本文的代码已在vs2017中得到验证。 从gbk迁移到utf8时容易出现中文乱码,在x86 32位编译环境下中文可以正常显示,但切换到x64 64位编译环境时可能会出现乱码。 本文所示的代码在32位和64位编译环境中不会乱码。 使用示例是c调用python。

# include iostream # include stdlib.h # include string # include string.h # include windows.husingnamespacestd; stringgbk_2_utf8(stringgbkstr ) {string outUtf8=' '; intn=multibytetowidechar (CP _ ACP,0,gbkStr.c_str ),-1,NULL,0 ); WCHAR *str1=new WCHAR[n]; multibytetowidechar(CP_ACP,0,gbkStr.c_str ) ),-1,str1,n ); n=widechartomultibyte (CP _ utf8,0,str1,-1,NULL,0,NULL,NULL ); char *str2=new char[n]; widechartomultibyte (CP _ utf8,0,str1,-1,str2,n,NULL,NULL ); outUtf8=str2; delete[]str1; str1=NULL; delete[]str2; str2=NULL; return outUtf8; } string utf8 _2_ gbk (string utf8 str ) {string outGBK=' '; intn=multibytetowidechar (CP _ utf8,0,utf8Str.c_str ),-1,NULL,0 ); WCHAR *str1=new WCHAR[n]; multibytetowidechar (CP _ utf8,0,utf8Str.c_str (),-1,str1,n ); n=widechartomultibyte(CP_ACP,0,str1,-1,空,0,NULL,NULL ); char *str2=new char[n]; widechartomultibyte(CP_ACP,0,str1,-1,str2,n,NULL,NULL ); outGBK=str2; delete[] str1; str1=NULL; delete[] str2; str2=NULL; 返回输出gbk; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。