首页
学习
活动
专区
圈层
工具
发布

使用UTF8
EN

Stack Overflow用户
提问于 2012-06-10 10:14:13
回答 1查看 1.2K关注 0票数 4

使用std::string和UTF8似乎是一个相当复杂的问题,我和我无法很好地解释do's和dont's。

如何正确地使用UTF8在C++中工作?这是相当混乱的。

我找到了boost::locale并设置了全局区域设置:

std::locale::global(boost::locale::generator()(""));

然而,在这之后,我需要考虑什么,什么时候我会有问题呢?从文件中写入/读取是否会像预期的那样工作,字符串比较等等?

到目前为止,我知道以下几点:

  • std::regex/boost::regex将无法工作,需要使用宽字符串和花圈。
  • boost::algorithm::to_upper不能工作,需要使用boost::locale::to_upper

除此之外,我还需要知道什么?

EN

回答 1

Stack Overflow用户

发布于 2012-06-10 10:42:23

欢迎来到神奇的Unicode世界。

  1. 对不起,wchar_t是已定义的实现,通常在Windows上不足以保存亚洲脚本的完整代码点(例如)。
  2. 您可以使用比较来查找数据,但是要对数据进行排序并将其呈现给听众,您将需要一个全排序算法。例如,要知道德语词典中的顺序与德语电话簿中的顺序不同(并且哭泣.)
  3. 一般说来,我建议不要自己去改变弦乐。Boost.Locale算法在包装ICU时一般都能工作,但在其他情况下不需要临时操作。
  4. 如果你把字符串分成几个部分,不要在单词中间分开。很容易将一个字符分割成两个字符(即使使用识别代码的算法,甚至避免将字符分割成两个字符(因为某些文化认为相邻字符的某些组合为一个字符)。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10967878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档