我正在努力将一些旧的C ++代码移植到Android平台。在这样做时,我注意到代码使用iconv_xxx()例程来处理Unicode转换。事实上,Android NDK默认没有iconv.h。我可以下载并构建libiconv的源代码。但是,我只是想知道为什么在几乎所有平台上的C ++编译器都支持mbstowcs,wcstombs时,甚至会使用iconv_xxx函数。和相关的例程。 iconv_xxx函数是否比mbsXXXwbsXXX例程具有任何优势?问候。
答案 0 :(得分:1)
mb
/ wc
函数在特定于平台的wchar_t编码和多平台编码(平台和特定于语言环境)之间进行转换。
在Linux on x86上,wc
可能是UTF-32LE,而mb
最有可能,但远非保证,是UTF-8。在Windows上,wc
是UTF-16LE; mb
可能是机器的默认语言环境(ANSI)代码页,并且很可能不是UTF-8。
因此,如果您想要转换为已知的特定编码,则必须使用iconv()
。