我刚在C/C++中与ICU做了一些成功的测试。我需要用不同的编码解析不同的CSV文件(可能是UTF-8,UTF-16 be ),对数据做一些修改,最后将UTF-8的所有内容输出到文件中。所以我选择了重症监护室。字符集检测工作正常,字符处理和转换到UTF-8也很好.
现在,我想将这个库部分集成到一个GUI库Nana中,它可以加载CSV、操作等等。Nana似乎使用std::string和std::wstring。
由于ICU内部将所有数据存储为UTF-16,所以在与ICU一起工作时,我要么获得了UChars,要么获得了UnicodeStrings。但是,我怎么能用它们中的任何一个与娜娜,而不是‘整合’与ICU?是否可以将UChar数组转换为wstring,或将UnicodeString转换为wstring?
在ICU文档中没有找到任何提示,so...maybe其他人已经在做这个工作了吗?
发布于 2016-07-13 22:02:30
大多数nana函数期望std::string编码在UTF-8中.
您可以使用接受或返回ICU功能的char *来完成对UTF-8的转换。
一些nana函数(如widget::caption )重载了std::wstring,预期它们将被编码为UTF-16 (在windows中)或UTF-32 (在Linux中),它们可以用来向操作系统传递带有本机字符类型和编码的字符串。如果您需要转换,nana提供了nana::charset,它可以管理(显式或隐式)从/到UTF-8/UTF-16/UTF-32的一些最经常需要的转换。
如果你尝试把static_cast<wchar_t *>(some_UChar*)传给娜娜,请告诉我们结果。我不能测试。
关于Unicode治疗的nana文档迫切需要更新。
发布于 2016-07-12 15:53:36
根据ICU文档,UChar数组是一个16位宽字符的数组.意味着公共实现中的wchar_t数组。这意味着,如果您的系统中有16位宽的wchar_t,您可以安全地将getTerminatedBuffer()函数的结果转换为const wchar_t *,或者将其直接用作C宽字符字符串,或者使用它构建std::wstring。
https://stackoverflow.com/questions/38332690
复制相似问题