字转换:wctomb、mbtowc,baiwc 指 Wide charactor,mb 指 Multi-byte。
字符串转换:wcstombs、mbstowcs,wcs 和du mbs 的 s 指 string。
这 4 个函数zhi是 C 标准函数库函数中的。
如果只是dao在 Windows 平台下编程,
可直接调用 Windows API 函数 WideCharToMultiByte 和 MultiByteToWideChar 实现。
但是如果调用标准库函数的话,在 Linux 下也是有效的。
调用标准库函数,
首先必须包含
locale.h
并调用 setlocale(LC_ALL, "") 后才能正确转换。
Windows 下的 Multi-byte 是 ANSI 编码的,Wide charactor 是 Unicode (UTF-16) 编码
而 Linux 下的 Multi-byte 是 UTF-8 编码的,Wide charactor 是 Unicode (UTF-32) 编码。
以下代码在linux执行。windows请使用WideCharToMultiByte 和 MultiByteToWideChar 使用即可
#include <stdlib.h>
#include <stdio.h>
#include <locale.h>
int main(){
char str[12];
wchar_t wstr[] = {0x5e7f,0x5dde,0x516c,0x4ea4};
setlocale(LC_ALL,"");
wcstombs(str,wstr,sizeof(str)/ sizeof(char));
printf("str=%s",str);
return 0;
}
本文深入解析了字符编码转换原理,包括wctomb、mbtowc、wcstombs及mbstowcs等C标准库函数的使用方法。通过实例演示了在Linux环境下如何正确进行宽字符与多字节字符之间的转换,并指出Windows平台下的对应API。文章强调了不同平台下多字节编码的区别,如Linux使用UTF-8,Windows则采用ANSI编码。

3万+

被折叠的 条评论
为什么被折叠?



