PHP 过滤一个字符串,这样json_encode就不会出错


php filter a string so that json_encode does not error out

>我正在从数据库中获取一堆数据并将其放入PHP数组中。 然后,我希望使用 $output = json_encode($out) json_encode该数组。

我的问题是,有时数组中的某些内容无法被json_encode读取,并且整个事情都失败了。 如果我用print_r($out)看一看,我可以清楚地看到它失败的地方,因为搞砸事情的角色总是在黑钻石内显示为问号。

首先 - 这些角色是什么?

第二 - 在将元素

添加到数组之前,是否有一个函数可以传递元素来去除这些元素,或者用空格替换"它们"?

我找到了答案。 由于来自数据库的数据以"黑菱形"字符存储,因此我需要从数据库中获取POST数据。

$x[4]  = utf8_encode(odbc_result($query, 'B'));

通过传递utf8_encode的结果,字符串被编码为UTF-8,非法字符被删除。

说回声json_encode($out);这将解决您的问题

黑钻石是浏览器问题。数据库使用普通问号。您似乎从databalse中获得了已经错误的数据。但是,在您的设置中使用不正确的utf非常棘手。您需要检查所有内容

  1. 如果您的表标有 UTF8 字符集
  2. 如果您的数据确实以 UTF 编码(未标记但确实已编码)
  3. 如果您的服务器在内容类型标头中发送正确的字符集。

查看从浏览器菜单中选择不同字符集的页面也很有用。

首先,你必须擦除你尝试过的所有随机操作的任何痕迹,所有这些不同的编码,解码和其他东西。只是从数据库直接输出的简单和直接。否则您将永远无法解决问题