我在几个地方读到 boost::algorithm::to_upper/to_lower 对于 utf8 来说是不行的:
- http://www.boost.org/doc/libs/1_51_0/libs/locale/doc/html/conversions.html http://www.boost.org/doc/libs/1_51_0/libs/locale/doc/html/conversions.html
- 如何将 std::string 转换为小写? https://stackoverflow.com/questions/313970/stl-string-to-lower-case
- 使用 UTF8 https://stackoverflow.com/questions/10967878/working-with-utf8
但在我的系统上,ubuntu 12.4.1 32 位,boost 1.46,语言环境 en_GB.UTF-8,只要我传递语言环境,一切看起来都很好,例如:
std::locale englishUTF8locale("en_GB.UTF-8")
boost::algorithm::to_upper_copy(L"ü", englishUTF8locale) -> L"Ü"
boost::algorithm::to_lower_copy(L"и", englishUTF8locale) ->L"И"
值得注意的是,使用 std::wstring 时有效,但使用 std::string 时无效
那么,boost::locale 并不是真的有必要吗?我的问题是我只能使用 boost 1.46,并且语言环境是为 1.48 创建的
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)