php json_encode与西里尔字符

时间:2011-06-26 10:55:21

标签: php json

不要重新发明轮子我引用现有的Cyrillic characters in PHP's json_encode

问题是:这些角色是什么,它们是什么意思:\ u0435,\ u0434等等?我猜这与字节数没有关系,只是UTF-8中的序列号分别对应于西里尔符号“е”,“д”等等?

1 个答案:

答案 0 :(得分:3)

这些是Unicode转义序列,它通过以十六进制表示其代码点来引用Unicode字符集中的字符。

来自JSON specification

  

任何角色都可能被转义。如果角色在基本      多语言平面(U + 0000到U + FFFF),然后它可能是      表示为六个字符的序列:反向固相,然后      用小写字母u,后跟四个十六进制数字      编码角色的代码点。但是十六进制字母A      F可以是大写或小写。所以,例如,一个包含的字符串      只有一个反向固相字符可以表示为      “\u005C”。

虽然这些字符不需要转义(请参阅unescaped rule),但json_encode会对除US-ASCII(请参阅source of json.c)之外的任何字符进行编码以避免基于US-ASCII的协议编码问题。

因此,在JSON字符串中,\u0435引用U + 0435处的字符,即CYRILLIC SMALL LETTER IE(е),\u0434引用U + 0434处的字符,即CYRILLIC SMALL LETTER DE(д)。