有没有简单的方法可以从ASCII转换为UTF8? (使用boost :: locale)

时间:2014-08-14 15:01:04

标签: c++ boost utf-8 locale

我尝试将一些字符串从ASCII转换为UTF8。

而且,我搜索了许多东西,但我找不到它。

所以我编码了这个。

std::string ASCII("ASCII string");
auto utf8 = boost::locale::conv::to_utf<char>(ansi, std::locale("en_US.UTF8"));

这是对的吗?在我的系统上,这是不可行的。

请帮助我。

感谢。

1 个答案:

答案 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);
}