ajax请求json数据遇到不能解析,看了下结果中出现了一个特殊字符红色的点,鼠标移上去提示\u5.
复制结果用notepad++打开,有两个ENQ字符:
尝试用php的json_decode解析一下:
结果是:控制字符错误
在ASCII中常用的控制字符包括
控制字符(Control Character),出现于特定的信息文本中,表示某一控制功能的字符。
在ASCII码中,第0~31号及第127号(共33个)是控制字符或通讯专用字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等;通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等。
七位ASCII定义了33个代码作为控制字符,它们是0到31、以及127,(位于0x00-0x1F及0x7F)。
兼容的八位ISO/IEC 8859-1加上了从ISO/IEC 6429定义的从128到159的32个代码,位于0x80-0x9F。
输入json字串前需要移除控制字符:
/** * remove control characters (for json) * @param $str * @return mixed */ function strip_control_characters($str){ return preg_replace('/[\x00-\x1F\x7F-\x9F]/u', '', $str); }