2016-03-18 51 views
2

我从客户那里得到了一个数据库,需要创建一些逻辑,比如读取和插入条目。列名中的特殊字符

当我尝试了一些基本要求,如:

$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(�)" ... 

我花了一段时间才能发现,那还有列有一些特殊的字符名称,如µ°。显然,他们无法正确显示,所以整个回应变得无效,我没有结果。

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

是否有另一种解决方案,而不是只是手动查找这些字符并将其删除?

+0

有栏中将特殊字符没有固有的问题名。你的代码到底在干什么? – VoteyDisciple

+0

将连接字符集设置为utf8(utf8mb4是mysql中真正的unicode字符集,因此如果需要,请使用该字符集),并将表名和列名置于反引号中。 –

回答

1

因为json_encode()/json_decode()只涉及UTF-8编码,你必须将所有非UTF8编码的字符串UTF8

您可以使用utf8-encode() function