windows中UTF编码与ANSI编码以及MultiByteToWideChar的使用

在Windows系统中,ANSI编码在不同地区代表不同的标准,如中文简体环境下是GBK(936)。`MultiByteToWideChar`函数在转换时,`CodePage`参数必须与源编码匹配。例如,从ANSI(GBK)转到`wchar_t`,`CodePage`应设为 `_CHINESE_SIMP_CP`或`CP_ACP`;从UTF-8转,应设为 `CP_UTF8`。在Win10系统中,如果设置为默认的`CP_ACP`,可能会导致乱码,因为系统可能使用`CP_UTF8`。在ANSI到UTF-8的转换中,通常需要通过`WCHAR`作为中介。另外,一些C运行时库函数,如`strftime`,可能需要UTF-8格式的参数,否则可能导致错误结果。可以通过`setlocale()`函数来设置进程中的代码页,解决部分兼容性问题。
摘要由CSDN通过智能技术生成
ANSI编码: 不同国家和地区代表不同的编码标准,在中文简体环境下表示 GBK,对应的代码页为_CHINESE_SIMP_CP(936).,日文操作系统中ANSI代表Shift_JIS编码。
使用::MultiByteToWideChar(CodePage, dwFlags, src, nSrcLen, dst, nDstLen)时,注意, src的编码格式必须与codePage所表示的含义一致。
如:中文简体系统下,将char*(所指内容为ANSI编码)转为 wchar时,CodePage的值需为:_CHINESE_SIMP_CP,或者CP_ACP(系统默认值,此时表示的就为_CHINESE_SIMP_CP)
若 char* 所指的内容为utf-8编码,使用MultiByteToWideChar时,CodePage的值需为 CP_UTF8,若还设置为CP_ACP或者936,将会产生乱码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值