最近遇到了一个非常奇怪的问题,我的数据库包含看似正常的空白字符的字符串,但实际上是其他东西.
例如,应用于trim()字符串:
"TEST "
Run Code Online (Sandbox Code Playgroud)
来找我:
"TEST "
Run Code Online (Sandbox Code Playgroud)
结果是.所以我复制并粘贴字符串中的最后一个字符,然后:
echo ord(' ');
194
Run Code Online (Sandbox Code Playgroud)
194?根据应该是的ASCII表?.所以我在这一点上感到困惑.为什么这个角色看起来trim()像是空格trim()?当失败的时候我怎么能这样?
我遇到麻烦让json_decode处理我收到的特定字符串.
我把它缩小到这条线:
"systemNotes [6]":"2013年1月9日下午12:52 - 测试名称 - 更改结算地址2从发货名称:发货姓氏:电子邮件地址:发货地址:发货地址2:发货城市:发货邮编/邮政:运输国家:运输状态:电话:账单名:账单姓:账单地址:账单地址2:账单C"
从这个问题复制json,问题是不可重现的 - 但原始json的代表片段在这里:http://codepad.org/ZzrC7rqQ - 并将其放在jsonlint.com中给出:
Parse error on line 3:
... "systemNotes[6]": "January 09, 2013 12
-----------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['
Run Code Online (Sandbox Code Playgroud)
这个字符串有什么问题,这是无效的json?
编辑
我设法找到了确切的代码.
"systemNotes [6]":"一月+ 09%2C + 2013 + 12%+ 3A52 PM ++首先+名称++ ++变更帐单+地址+ 2 +从++到+送货+首先+名称%3A% 09 +运费+尾+名称%3A%09 +电子邮件+地址%3A%09 +运费+地址%3A +%09 +运费+地址+ 2%3A +%09 +运费+城市%3A +%09 +运费+邮编% 2FPostal%3A +%09 +运费+乡村%3A +%09 +运费+州立%3A +%09 +电话%3A +%09 +计费+一+名称%3A +%09 +计费+尾+名称%3A +%09 +计费+地址%3A +%09 +帐单+地址+ …