ajax请求json数据遇到不能解析,看了下结果中出现了一个特殊字符红色的点,鼠标移上去提示\u5.
复制结果用notepad++打开,有两个ENQ字符:
尝试用php的json_decode解析一下:
$content = file_get_contents('i2-circle.txt'); echo $content; echo "\n"; json_decode($content); switch (json_last_error()) { case JSON_ERROR_NONE: echo '没有错误发生'; break; case JSON_ERROR_DEPTH: echo '到达了最大堆栈深度'; break; case JSON_ERROR_STATE_MISMATCH: echo '无效或异常的 JSON'; break; case JSON_ERROR_CTRL_CHAR: echo '控制字符错误,可能是编码不对'; break; case JSON_ERROR_SYNTAX: echo '语法错误'; break; case JSON_ERROR_UTF8: echo '异常的 UTF-8 字符,也许是因为不正确的编码。'; break; default: echo '未知错误'; break; }
在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); }
未经允许不得转载:ganlei的个人博客 » \u5 ENQ 询问字符,json decode failed (控制字符)