PHP中遇到BOM、feff编码导致json_decode函数无法解析问题
|
昨天同事遇到一个奇怪的问题,就是以下代码,无法通过JSON校验,也无法通过PHP的json_decode函数解析。
代码如下:
可能聪明的你已经猜到其中包含有不看见的特殊字符,在vim下查看:
代码如下:"title": "",
"pinyin": ""
}
]
发现在“title”前面有一个字符 在Linux下通过xxd命令查看文件内容的十六进制: 代码如下: 发现问题解决就很容易了,查找删除BOM就OK了,linux下BOM相关的命令有: VIM的BOM操作 代码如下: 查找UTF-8编码中的BOM 代码如下: 还可以在svn的钩子中禁止提交BOM(以下代码来自网络,没校验) 代码如下: REPOS="$1" TXN="$2" SVNLOOK=/usr/bin/svnlook FILES=`$SVNLOOK changed -t "$TXN" "$REPOS" | awk {'print $2'}` for FILE in $FILES; do CONTENT=`$SVNLOOK cat -t "$TXN" "$REPOS" "$FILE"` if echo $CONTENT | head -c 3 | xxd -i | grep -q '0xef,0xbb,0xbf'; then echo "BOM!" 1>&2 exit 1 fi done 最后提醒大家在wowdows下最好别使用记事本等会自动添加BOM的编辑器修改代码,容易引发一些问题。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
