UnicodeString到char *(UTF-8)

时间:2010-06-30 15:09:30

标签: c++ windows utf-8 internationalization icu

我在OS X上使用C ++中的ICU库。我的所有字符串都是UnicodeStrings,但我需要使用系统调用,如fopen,fread等。这些函数将const char *或char *作为参数。我已经读过OS X在内部支持UTF-8,所以我需要做的就是将我的UnicodeString转换为UTF-8,但我不知道如何做到这一点。

UnicodeString有一个toUTF8()成员函数,但它返回一个ByteSink。我也找到了这些例子:http://source.icu-project.org/repos/icu/icu/trunk/source/samples/ucnv/convsamp.cpp并阅读有关使用转换器的内容,但我仍然感到困惑。任何帮助将非常感激。

2 个答案:

答案 0 :(得分:7)

调用UnicodeString::extract(...)解压缩为char *,为转换器传递NULL以获取默认转换器(位于您的操作系统将使用的charset中)。

答案 1 :(得分:3)

这将有效:

std::string utf8;
uStr.toUTF8String(utf8);