什么是最佳做法的Unicode处理在C++?

有帮助吗?

解决方案

  • 使用 重症监护病房 处理你的数据(或类似的图书馆)
  • 在你自己的数据存储,确保一切是存在的同样的编码
  • 确保你总是用你的unicode库对于平凡的任务,如串的长度、资本状态,等等。从来没有使用标准的图书馆内置喜欢 is_alpha 除非那是你想要的。
  • 我不能说它够的: 从来没有迭代指数的一个 string 如果你关心的正确性,随时使用unicode库。

其他提示

如果你不关心向后兼容与以前的C++标准,目前C++11标准已经建立在Unicode支持: http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2011/n3242.pdf

所以真正的最佳做法Unicode处理在C++将使用的设施。这并不总是一种可能性与老年码基地不过,标准正在使新。

编辑:为了澄清,C++11Unicode知道它现在具有支持Unicode的文字和统一字符串。然而,该标准图书馆只有 有限的支持 Unicode的处理和转换。你的当前的需要,这可能是不够的。然而,如果您需要做的大量繁重的,现在然后你可能仍然需要使用什么样的 重症监护病房 为了更深入的处理。有一些建议 目前在工作 包括更强有力的支持对文本之间的转换不同的编码。我猜(希望)的是,这将部分下 技术报告.

我们的公司(及其他)使用开放源代码 国际组for Unicode (伊斯兰法院联盟)库最初是由Taligent.

它处理串、选择、转换的日期/时间、整理、转换等。al。

开始的 伊斯兰法院联盟放到用户手册

这是一个清单,用于Windows编程:

  • 所有串括在_T("我string")
  • strlen()等。功能的替代_tcslen()等。
  • 使用LPTSTR和支,而不是char*和const char*
  • 当启动新的项目开发工作室,确保宗教Unicode的选择是选择在项目属性。
  • C++字符串中使用std::wstring而不是std::string

看看 情况不敏感的串比较C++

这个问题有一个链接到Microsoft文件Unicode: http://msdn.microsoft.com/en-us/library/cc194799.aspx

如果你看看左边的导航侧MSDN上的下一个到那篇文章你应该找到很多相关的信息Unicode的功能。它是一部分的一章"编码的字符"(http://msdn.microsoft.com/en-us/library/cc194786.aspx)

它具有以下小节:

  • 代码页模型
  • 双字符集在Windows
  • Unicode
  • 兼容性问题,在混合环境中
  • Unicode的数据转换
  • 迁移到Windows基于的程序以Unicode
  • 摘要

虽然这可能不是最好的做法,为每个人,你可以写你自己C++UNICODE程序,如果你想要的!

我只是完成了这样做在一个周末。我学到了很多,但我不保证这是100%的免费的错误,我做了很多测试的和似乎能正常工作。

我的代码是根据新的BSD许可证,并可以在这里找到:

http://code.google.com/p/netwidecc/downloads/list

它被称为WSUCONV和带有样品的主要()程序之间转换的UTF-8,UTF-16和标准ASCII。如果你扔掉的主要代码,你已经有了一个漂亮的图书馆的读写UNICODE。

如上面已经说了一个图书馆是最好的选择时使用的大型系统。但是有些时候你想到处理的事情,你的自行(也许是因为将图书馆将使用许多资源,如上一个微控制器)。在这种情况下你想要一个简单的图书馆,你可以复制件对的事情你实际需要。

柳Schlanger的例码似乎是一个很好的一个(见他的回答更多的细节)。

我还发现了另一个具有小型代码,但是缺乏充分的错误检查和只处理UTF-8但是更简单的采取的部分出来的。

这里有一个列表中的嵌入图书馆似乎不错。

嵌入图书馆

使用IBM的 国际组for Unicode

看一看的建议 UTF-8无处不在

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top