我尝试将一些字符串从ASCII转换为UTF8。
而且,我搜索了许多东西,但我找不到它。
所以我编码了这个。
std::string ASCII("ASCII string");
auto utf8 = boost::locale::conv::to_utf<char>(ansi, std::locale("en_US.UTF8"));
这是对的吗?在我的系统上,这是不可行的。
请帮助我。
感谢。
答案 0 :(得分:10)
如果您的意思是从系统区域设置转换为utf8,反之亦然,我们使用以下效果良好的方法:
static std::string fromLocale(const std::string &localeStr){
boost::locale::generator g;
g.locale_cache_enabled(true);
std::locale loc = g(boost::locale::util::get_system_locale());
return boost::locale::conv::to_utf<char>(localeStr,loc);
}
static std::string toLocale(const std::string &utf8Str){
boost::locale::generator g;
g.locale_cache_enabled(true);
std::locale loc = g(boost::locale::util::get_system_locale());
return boost::locale::conv::from_utf<char>(utf8Str,loc);
}