列名中的特殊字符

时间:2016-03-18 11:15:37

标签: php mysql special-characters

我从客户那里得到了一个数据库,需要围绕它创建一些逻辑,比如读取和插入条目。

当我尝试一些基本请求时,例如:

$json = array ();
$query = "select * from tab1";

if ($result = $link->query ( $query )) {
    while ( $row = $result->fetch_assoc () ) {
        array_push ( $json, $row );
    }
}

die ( json_encode ( $json ) );

我出乎意料地得到了一个空洞的回应。

直接从PHPMyAdmin执行相同的查询,我得到了所有预期的结果。

当我刚刚将JSON结果转储到浏览器中时,我注意到(摘录):

... string(30) "ColumnName(�)"  ...

我花了一段时间才发现,列名有一些特殊的字符,例如µ°。显然,它们无法正常显示,因此整个响应无效,我没有结果。

只需从列名中删除这些字符即可解决问题。

是否有其他解决方案,而不仅仅是手动查找这些字符并删除它们?

1 个答案:

答案 0 :(得分:1)

由于json_encode() / json_decode()仅处理 UTF-8 编码,您必须将所有非utf8编码的字符串转换为utf-8

您可以使用utf8-encode() function