Unicode特殊字符的坑

一、LESP

先了解下JSON处理中特殊字符的正确处理方式。

在 ECMAscript 5.1 ( https://www.ecma-international.org/ecma-262/5.1/#sec-15.12.2 ) 中有这样一句话:

JSON uses a more limited set of white space characters than WhiteSpace and allows Unicode code points U+2028 and U+2029 to directly appear in JSONString literals without using an escape sequence.

这意味着 JSON.stringify 和 JSON.parse 都不应当对空格、U+2028、U+2029这三个字符进行转义,例如对于空格:

可以看到空格未进行转义,同样的道理,U+2028 也不会被转义:

但对于 ' ' ,是需要转义的:

Javascript的编码格式为UCS-2,JSON.parse()一个包含特殊字符的字符串会报错,将原字符串中的特殊字符特换掉就行(也可以替换成空)

str = str.Replace(/u2028/g, "\u2028");

参考链接:

https://www.cnblogs.com/rrooyy/p/5349978.html

原文地址:https://www.cnblogs.com/dengquan/p/14329762.html