插入到dom时转换UTF-8符号

时间:2017-03-28 09:20:23

标签: javascript

我有一个以下问题,我正在构建使用来自ajax调用的数据流的应用程序,因此即将到来的数据将在json字符串中进行转义。

示例:1°Set

当我将该数据插入DOM时,它的转换方式如下:1°Set

我不使用任何库,如jQuery,纯Javascript。

我试图将转换后的名称存储在另一个地方,但我似乎无法手动转换它,我尝试了以下功能:

var test = function(str) {
    console.log(unescape(encodeURIComponent(str)) );
    console.log(decodeURIComponent(escape(str)) );
};

test('1°Set');

它保持不变,是否有人知道如何将其转换为类似DOM的版本?

1 个答案:

答案 0 :(得分:3)

  

我有一个以下问题,我正在构建使用来自ajax调用的数据流的应用程序,因此即将到来的数据将在json字符串中进行转义。

     

示例:1°Set

听起来你遇到了问题,因为你的后端提供的JSON看起来像:

{
  "something": "1°Set"
}

而不是字符串“1°Set”,而是提供相当于“1°Set”的HTML源代码。这看起来非常不必要。我无法看到在JSON中使用HTML转义的充分理由,除非您实际上希望您的JSON实际包含HTML源代码的一部分(包含格式和所有内容),而不仅仅是字符串。

我的建议:让我们保持简单,而不是像:

{
  "something": "1°Set"
}

或等效地使用JSON语法正确地转义它:

{
  "something": "1\u00b0Set"
}

现在,您将获得一个可以轻松显示的纯字符串,例如在element.textContentelement.value内或其他任何位置。您甚至不需要任何转换。