将字符串中的 č,š,ć 等字符替换为其 html 代码C++
Replace characters like č,š,ć in a string to their html codes C++
我正在使用cpprest http_client
从RSS链接获取数据。
我修改的数据存储如下:
container_buffer<std::string> buffer;
response.body().read_to_end(buffer).get();
//use buffer.collection() to get data;
而不是将其传递给需要const char *
的绘图库.
现在,如果收到的数据是韩语,例如
지방 아파트 분양시장 '양극화
它显示正常。
但如果数据是克罗地亚语或斯洛伐克语等。
Oblačno s kišom i pljuskovima, moguć
人物
č,š,ć
显示为
<?>
现在以下是我尝试过的事情:
我有 gcc 4.8.1,所以不支持
链接std::codecvt
。如果我尝试直接将数据存储在字符串中,即
std::string data;
data = response.extract_string((.get((;克罗地亚语或斯洛伐克语显示正确,但韩语被扭曲了。
如果我尝试将 č,š,ć 替换为他们的 HTML 代码:
boost::replace_all(str, "æ", "& aelig;"(;//添加空格,否则在此处显示为 æ nly
boost::replace_all(str, "ž", "& #382;"(;
boost::replace_all(str, "š", "& scaron;"(;
boost::replace_all(str, "è", "& egrave;"(;
与以前一样,这些字符显示正确,但它也阻碍了韩语字符,并将某些韩语字符替换为这些字符。
我该如何才能正确显示所有字符?
您在问题中并没有真正提供所有足够的详细信息,但您遇到某些拉丁语内容问题的原因是因为它使用iso-8859
字符集之一进行编码,并且您的区域设置的字符集UTF-8
。
正确显示任何HTTP
响应内容中的所有字符的唯一方法:
1( 从HTTP
"内容类型:"标头中获取 charset
属性,该标头将告诉您用于对此HTTP
响应正文进行编码的字符集。
2( 如果您的C++库不提供一组类似的区域设置转换,请使用库(如 libiconv
(将HTTP
响应的正文从编码字符集转换为区域设置的字符集。
根据我的经验,使用 libiconv
更可靠,因为 C++
标准并不能保证支持哪些语言环境。
- 模板参数替换失败,并且未完成隐式转换
- 如何用转义符替换字符串中的所有特殊字符
- 为什么除非添加括号,否则构造函数上的模板替换会失败?
- 在一个读写器队列中,我可以用volatile替换原子吗
- 用符号版本替换对函数的所有调用
- 如何通过替换顺序代码的while循环来添加OpenMP for循环
- 替换基于地图的所有引用
- 按平均值替换数组中的元素
- 我可以在这里替换什么,因为我不能在 C# 中使用隐式变量的 lambda 函数?
- 如何将字节数组元素替换为修改的十六进制 ASCII 符号?
- 简单的 HTML 验证器
- 初始化 std::vector 替换为单大括号而不是双大括号
- 删除/替换C++字符串中的多字符 (ÿû)
- 将 malloc 替换为数组
- 如何替换此示例代码片段中已弃用的handler_type_t或 boost::asio::handler_type?
- 如何在C++中用'\'替换''来处理转义序列?
- 替换密码:哪一个?
- 如何在 html 页面中插入 cgi 应用程序的输出?
- 将字符串中的 č,š,ć 等字符替换为其 html 代码C++
- 匹配字符串长度;查找和替换;在c++中删除HTML标签