【发布时间】:2013-01-10 10:33:24
【问题描述】:
我在 php 中使用 echo 来返回数据库请求。尝试在 Flash 中解码结果时,我收到错误消息,告诉我意外字符。当我在浏览器中查看输出时,它看起来很好。但是当我复制内容(全选 -> 复制)然后通过 php 中的脚本运行文本时,我看到了很多奇怪的字符。这就解释了为什么 JSON 解码失败,但是我该如何摆脱奇怪的字符呢?
检查字符串的测试脚本
$string = str_split($string);
echo '<pre>';
print_r($string);
echo '<pre>';
结果:
[0] => ï
[1] => »
[2] => ¿
[3] => ï
[4] => »
[5] => ¿
[6] => ï
[7] => »
[8] => ¿
...
【问题讨论】:
-
 是 Byte order mark,由文本编辑器设置,以提示其他编辑器该文本使用 UTF-8 编码而不是 ASCII、ISO-8859-1 等。你到底是怎么做到的?复制后通过脚本运行文本”?请您具体说明您执行操作的顺序,因为我认为这就是问题所在。
-
我在浏览器中复制了输出并将其粘贴到我的测试 php 文件中的变量 ($string) 中。这些字符不是视觉的,但是当我尝试在编辑器中逐步浏览这些字符时,我得到了他们在那里的提示。运行脚本后(在我的问题中显示)我可以看到字符。
-
在你的第一步(你使用
echo返回数据库请求)你能不能用file_put_contents('out.txt', $output);之类的东西把你发送到浏览器的确切输出写到一个文件中,上传它某处并在这里放一个链接?通过从您的浏览器复制它并将其插入到您的 PHP-Editor-Of-Choice 中,文本可能已被转换、前缀(带有 BOM)等,因此不能用作查找问题根本原因的基础.