2013-07-26 68 views
0

我试图建立一套帮助函数来解码和修改多字节utf-8字符串。例如,查找字符串中的字符数量,并查找特定字符的字节偏移量。如何解码多字节utf8字符串? (C++)

我一直在寻找解决方案一段时间,但一直未能弄清楚。 如果任何人都可以给我看一个跨平台和便携式的方式来做到这一点,只有使用STL 我真的很感激。此外,如果有一个C++ 11的方式来做到这一点,我也打开。

+0

http://site.icu-project.org/ –

+3

Stack Overflow用于回答关于您实际面对的代码的问题的具体问题,而不是为您执行代码 –

+0

请参阅utf8everywhere.org说明 –

回答

2

你应该阅读和UTF-8研究的维基百科页面,编码是清楚的描述thereL https://en.wikipedia.org/wiki/UTF-8

为了解码UTF-8,读取第一个字节,而应该告诉你很多后续字节是如何形成的字符。然后阅读许多其他字节,连接“数据”位,并且您将获得编码点编号。

如果你这样做,直到你到达字符串的末尾,这允许你计算字符串中有多少个代码点。

如果你这样做直到你达到某个代码点索引,你就会知道该代码点索引的字节偏移量。

我不认为真的有任何STL功能可以帮助您,除了您的基本std::string::const_iterator

至于非标准库,我高度推荐使用unicode库,如ICU,或者不要自己编写代码。如果你非常小心的话.Net库有点类似工作,但我不认为Windows有任何其他API可以帮助解决这个问题。