本文比较完整地整理一下 JSON 编码中的转义,以及 JSON 对 Unicode 编码的处理。
其实这是我上一篇文章的姊妹篇。在研究 Unicode 颜文字的时候,由于我们的数据传输是通过 JSON 串来完成的,在对颜文字进行转码传输的过程中,也发现了一个问题。解决问题之后,便有了本总结文。
JSON 中的普通转义字符
个人认为,JSON 是目前针对程序员而言可读性(readability)最佳的数据传输格式之一,并且 JSON 完整地考虑到了数据传输中的转义,避免出现各种注入风险。当对 JSON 进行序列化操作时(Go 中称为 marshal),根据 JSON 标准的说明,需要对字符串中的以下字符进行转义:
符号
名称
转义后的字符串
"
双引号
\"
/
斜杠
\/
\
反斜杠
\\
\b
退格符
\b
\f
垂直制表符
\f
Tab
水平制表符
\t
\r
回车
\r
\n
换行符
\n
<
左尖括号
\u003C
>
右尖括号
\u003E
&
And 符号
\u0026
另外针对 Go 语言,个人建议再转义一个百分号 % 为 \u0025,原因是在 Go 的各种字符