我似乎在缠绕某些东西时遇到了一些麻烦。我正在尝试创建一个C ++函数来将UTF8转换为Wide。我开始使用谷歌搜索,发现了Boost和ICU(两者看起来都太大了)。然后我找到了utf-cpp头库,看起来不错。我发现通过这里的一些线程。
然后我读了那个帖子并找到https://stackoverflow.com/a/6155524
但是这两个函数如何将UTF32字符串转换为Wide char?它似乎是UTF32到UTF8。我在utf-cpp标题文档中找不到任何宽字符...
无论如何有任何类型的库将UTF8 / 16/32转换为宽和反转?我看着似乎使用ICU的http://src.chromium.org/svn/trunk/src/base/utf_string_conversions.cc,但它也有18个头文件。
有任何帮助吗?也许今天只是我的头脑。
编辑:在重读之后,这是两个问题......我真正想知道的是有一个很好的小型库(如utf-cpp标题)来处理宽字符和的unicode。
答案 0 :(得分:2)
如果通过“wide char”,你指的是wchar_t
,那么你必须考虑到它在某些平台上是16位(使用UCS-2或UTF-16),但是是32 -bit(使用UTF-32)在其他平台上。因此,在询问如何转换为“wide char”时,首先必须定义“宽字符”实际意味着什么。处理UTF-16/32时需要使用适当的16位/ 32位数据类型。
几乎任何Unicode库,包括utf8-cpp和ICU,都具有使用适当的数据类型在UTF8< - > UTF16和UTF8< - > UTF32之间进行转换而不依赖wchar_t
的功能。