UnicodeString 到 char* (UTF-8)

发布于 2024-09-07 20:17:16 字数 487 浏览 4 评论 0原文

我在 OS X 上使用 C++ 中的 ICU 库。我的所有字符串都是 UnicodeString,但我需要使用 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 并阅读有关使用转换器的信息,但我仍然很困惑。任何帮助将不胜感激。

I am using the ICU library in C++ on OS X. All of my strings are UnicodeStrings, but I need to use system calls like fopen, fread and so forth. These functions take const char* or char* as arguments. I have read that OS X supports UTF-8 internally, so that all I need to do is convert my UnicodeString to UTF-8, but I don't know how to do that.

UnicodeString has a toUTF8() member function, but it returns a ByteSink. I've also found these examples: http://source.icu-project.org/repos/icu/icu/trunk/source/samples/ucnv/convsamp.cpp and read about using a converter, but I'm still confused. Any help would be much appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

最美的太阳 2024-09-14 20:17:16

调用 UnicodeString::extract(...) 提取到 char* 中,为转换器传递 NULL 以获取默认转换器(位于操作系统将使用的字符集中)。

call UnicodeString::extract(...) to extract into a char*, pass NULL for the converter to get the default converter (which is in the charset which your OS will be using).

魔法少女 2024-09-14 20:17:16

ICU 用户指南 > UTF-8 提供了执行此操作的方法和描述。

在 UTF-16 API 中使用 UTF-8 字符串的最简单方法是通过 C++ icu::UnicodeString 方法 fromUTF8(const StringPiece &utf8) 和 <代码>toUTF8String(StringClass &结果)。还有toUTF8(ByteSink &sink)

并且现在不首选 extract()

注意:icu::UnicodeString 具有构造函数、setTo()extract() 方法,它们采用转换器对象或字符集姓名。这些可用于 UTF-8,但不如 fromUTF8()/toUTF8()/toUTF8String() 高效或方便上面提到的方法。

ICU User Guide > UTF-8 provides methods and descriptions of doing that.

The simplest way to use UTF-8 strings in UTF-16 APIs is via the C++ icu::UnicodeString methods fromUTF8(const StringPiece &utf8) and toUTF8String(StringClass &result). There is also toUTF8(ByteSink &sink).

And extract() is not prefered now.

Note: icu::UnicodeString has constructors, setTo() and extract() methods which take either a converter object or a charset name. These can be used for UTF-8, but are not as efficient or convenient as the fromUTF8()/toUTF8()/toUTF8String() methods mentioned above.

红衣飘飘貌似仙 2024-09-14 20:17:16

这将起作用:

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

This will work:

std::string utf8;
uStr.toUTF8String(utf8);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文