【发布时间】:2015-01-11 20:56:11
【问题描述】:
我正在寻找一种技术来转换由服务器发送的包含如下内容的字符串(JSON):
...."Test \u00e9\u00e9\u00e9"..... 类似:“Test ééé”
我找到了解决方案:boost::replace_all(listFolder, "\\u00e9", "é");
而且我正在将这个提升功能与其他字母 àùèê 等一起使用......这很痛苦!
不知道有没有自动进行这种转换的函数。
否则,我想告诉你一些其他事情,如果我使用此功能,服务器将正确处理我发送给它的字符串并包含带重音的字母:
std::string fromLocale(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);
}
不幸的是,该代码的逆代码无法处理服务器发送的字符串。
std::string toLocale(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);
}
【问题讨论】:
-
我不太清楚你在问什么。看看这些用于解码 JSON (Unicode) 转义的 sn-ps:
append_utf8in this sample -
读者注意到,正如@sehe 解释的那样,描述为
"Test \u00e9\u00e9\u00e9"的字符串是字符串"Test \\u00e9\\u00e9\\u00e9",即\、u、0、0、e 和9 是单独的字符。 -
是的,干杯。 - 阿尔夫