php - 列名中的特殊字符

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

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

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

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

最佳答案

因为json_encode()/json_decode()只处理UTF-8编码,你必须将所有非utf8编码的字符串转换成utf -8

您可以使用 utf8-encode() function

关于php - 列名中的特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36082971/

相关文章:

php - 插入时数组到字符串的转换

php - 查询图像到数据库

php - jQuery AJAX/PHP/MySQL 实时过滤

character - '`'字符叫什么?

php - 使用 MySQL 数据库中的 AJAX 和 PHP 显示实时用户状态

php - 奇怪的加入php

php - 无法在外部 CSS 工作表中定义填充和边距

mysql - Node.js 中的页面重定向

java - java中如何转义$?

sql-server - SQL 查询中的两个转义字符