将字符串中的č,š,Replace等字符替换为其html代码C ++

时间:2016-05-12 02:39:34

标签: html c++

我正在使用cpprest http_client从RSS链接获取数据。

我撤销的数据存储如下:

container_buffer<std::string> buffer;
response.body().read_to_end(buffer).get();
//use buffer.collection() to get data;

然后将其传递给绘制lib,其中const char *

现在,如果收到的数据是在韩国,如

  

지방아파트분양시장`양극화

显示正常。

但如果数据是在crotain或斯洛伐克等。

  

oblačnosišomipljuskovima,moguć

字符

  

C,S,ç

显示为

  

&LT; ? &GT;

以下是我尝试过的事情:

  1. 我有gcc 4.8.1,因此不支持std::codecvtlink

  2. 如果我尝试将数据直接存储在字符串中,即

    std :: string data;
    data = response.extract_string()。get();

    巴豆或斯洛伐克表演得当,但韩国人变得歪曲。

  3. 如果我尝试将č,š,ć替换为他们的HTML代码:

    boost :: replace_all(str,“æ”,“&amp; aelig;”); //空格添加,否则显示为æhere nly

    boost :: replace_all(str,“ž”,“&amp;#382;”);

    boost :: replace_all(str,“š”,“&amp; scaron;”);

    boost :: replace_all(str,“è”,“&amp; egrave;”);

  4. 与之前相同,这些字符显示正确,但它也会阻碍韩国字符,并将某些韩文字符替换为这些字符。

    我该怎样接近才能正确显示所有字符?

1 个答案:

答案 0 :(得分:2)

您并没有真正提供问题中的所有详细信息,但您可能因为某些拉丁语内容存在问题而导致其使用{{1}之一进行编码}字符集,您的语言环境的字符集为iso-8859

唯一可以从任何UTF-8响应的内容中正确显示所有字符的方法:

1)从HTTP&#34;内容类型:&#34;获取charset属性标题,它会告诉您用于编码此HTTP响应正文的字符集。

2)如果您的C ++库没有,请使用HTTP等库将libiconv响应的正文从编码字符集转换为您的语言环境的字符集提供一组可比较的区域设置转换。

根据我的经验,使用HTTP更可靠,因为libiconv标准并未对支持哪种语言环境做出很多保证。