3

我似乎很难把头绕在什么东西上。我正在尝试创建一个 C++ 函数来将 UTF8 转换为 Wide。我开始在谷歌上搜索,发现了 Boost 和 ICU(两者看起来都太大了)。然后我找到了 utf-cpp 头库,看起来不错。我通过这里的一些线程发现了这一点。

然后我阅读了该线程并找到了https://stackoverflow.com/a/6155524

但是这两个函数是如何将 UTF32 字符串转换为 Wide char 的呢?它似乎只是 UTF32 到 UTF8。我在 utf-cpp 标头文档中找不到任何关于宽字符的提及...

无论如何,是否有任何类型的库可以将 UTF8/16/32 转换为 Wide 和反向?我正在查看似乎使用 ICU的http://src.chromium.org/svn/trunk/src/base/utf_string_conversions.cc ,但它也有 18 个头文件。

有什么帮助吗?也许这只是我今天的头坏了。

编辑:重读后这是两个问题......我真的想知道是否有一个不错的小型库(如 utf-cpp 标头)来处理宽字符和 unicode。

4

1 回答 1

6

如果您指的是“宽字符”,wchar_t那么您必须考虑到它在某些平台上是 16 位(使用 UCS-2 或 UTF-16),但它是 32 位(使用 UTF-32)在其他平台上。因此,询问如何转换为“宽字符”/从“宽字符”转换,您首先必须定义“宽字符”的实际含义。处理 UTF-16/32 时需要使用正确的 16 位/32 位数据类型。

几乎所有 Unicode 库,包括 utf8-cpp 和 ICU,都具有使用适当数据类型在 UTF8<->UTF16 和 UTF8<->UTF32 之间转换的功能,而不依赖于wchar_t.

于 2013-04-17T02:21:08.413 回答