Php 列名中的特殊字符

Php 列名中的特殊字符,php,mysql,special-characters,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 = 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结果时,我注意到(摘录):

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

仅从列名中删除这些字符就解决了问题

除了手动查找并删除这些字符,还有其他解决方案吗?

因为
json\u encode()
/
json\u decode()
只处理UTF-8编码,所以必须将所有非utf8编码的字符串转换为UTF-8


您可以使用

列名中的特殊字符没有固有的问题。您的代码到底在做什么?将连接字符集设置为utf8(utf8mb4是mysql中真正的unicode字符集,所以如果需要,可以使用它),并将表名和列名放在背景标记中。
... string(30) "ColumnName(�)"  ...