我似乎在思考某事时遇到了一些麻烦。我正在尝试创建一个 C++ 函数来将 UTF8 转换为 Wide。我开始使用谷歌搜索并找到 Boost 和 ICU(两者看起来都太大了)。然后我找到了 utf-cpp 头库,看起来不错。我是通过这里的一些线程发现的。
然后我阅读了该线程并找到了/sf/answers/430886711/
但是这两个函数如何将 UTF32 字符串转换为宽字符?它似乎只是UTF32到UTF8。我在 utf-cpp 标头文档中找不到任何对宽字符的提及...
无论如何,是否有任何类型的库可以将 UTF8/16/32 转换为 Wide 和反向?我正在查看http://src.chromium.org/svn/trunk/src/base/utf_string_conversions.cc,它似乎使用 ICU,但它也有 18 个头文件。
有什么帮助吗?也许今天只是我的头坏了。
编辑:重读后这是两个问题......我真的想知道有一个漂亮的小库(如utf-cpp标头)来处理宽字符和unicode。
如果您指的是“宽字符”,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.