Unicode转换 - iconv_xxx与mbstowcs / wcstombs

时间:2014-04-14 22:43:26

标签: c++ unicode android-ndk

我正在努力将一些旧的C ++代码移植到Android平台。在这样做时,我注意到代码使用iconv_xxx()例程来处理Unicode转换。事实上,Android NDK默认没有iconv.h。我可以下载并构建libiconv的源代码。但是,我只是想知道为什么在几乎所有平台上的C ++编译器都支持mbstowcs,wcstombs时,甚至会使用iconv_xxx函数。和相关的例程。 iconv_xxx函数是否比mbsXXXwbsXXX例程具有任何优势?问候。

1 个答案:

答案 0 :(得分:1)

mb / wc函数在特定于平台的wchar_t编码和多平台编码(平台和特定于语言环境)之间进行转换。

在Linux on x86上,wc可能是UTF-32LE,而mb最有可能,但远非保证,是UTF-8。在Windows上,wc是UTF-16LE; mb可能是机器的默认语言环境(ANSI)代码页,并且很可能不是UTF-8。

因此,如果您想要转换为已知的特定编码,则必须使用iconv()