【发布时间】:2016-01-04 19:37:26
【问题描述】:
我希望在我的文件同步器应用程序中正确处理带有 Unicode 字符的字符串,但我不知道这种编码是如何工作的?
在 unicode 字符串中,我可以看到 unicode char 具有这种形式: "\uxxxx" 其中 xs 是数字,普通 C 或 C++ 程序如何解释这种 char ? (为什么'\'后面有'u'?有什么作用?)
在互联网上,我看到使用“宽字符串或 wchar_t ?? 那么,处理 unicode 字符的合适对象是什么?在 rapidJson(支持 Unicode、UTF-8、UTF-16、UTF-32)中,我们可以使用 const char* 来存储可能具有“宽字符”但这些字符需要超过一个字节才能表示的 JSOn。 . 我不明白...
这是我暂时找到的那种临时安排(unicode->utf8?ascii?, listFolder is a std::string):
boost::replace_all(listFolder, "\\u00e0", "à");
boost::replace_all(listFolder, "\\u00e2", "â");
boost::replace_all(listFolder, "\\u00e4", "ä");
...
【问题讨论】:
-
只是“具有 Unicode 字符”并不是一个非常精确的定义。你打算和他们做点什么吗?如果只需要存储和转发字符串,可以将 Unicode 字符串视为不透明的字节字符串,长度以字节为单位。