php显示中文乱码,phpmyadmin里的MySQL数据库中文乱码,如何解决?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php显示中文乱码,phpmyadmin里的MySQL数据库中文乱码,如何解决?相关的知识,希望对你有一定的参考价值。

php显示中文乱码,phpmyadmin里的mysql数据库中文乱码,如何解决? 情况如下: 新建php页面时中文显示正常,插入记录集导航条和记录集导航数据时的文字是英文,当运行预览(F12)时,IE页面出现的中文乱码,英文能正常显示; 当从php页面提交插入记录并返回页面时,显示的提交内容没有乱码,只是在Dreamweaver制作时写入的中文是乱码; 然后打开http://localhost/phpmyadmin/页面查看数据库,发现刚才输入的中文显示为乱码; 这个时候,我在数据库里修改刚才输入的中文并保存,这时数据库能显示的是中文,但回到在php页面运行预览(F12)时,在数据库里修改的那部分出现的是很多问号(?),其他没有修改的内容没有变化。请各位高手出手相助!该如何修改才不会乱码? 1..安装的是appserv-win32-2.5.9及Dreamweaver CS3 2..在MySQL Command Line Client输入以下命令时: mysql> SHOW VARIABLES LIKE 'character_set_%'; +--------------------------+----------------------------------+ | Variable_name | Value | +--------------------------+----------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | C:\AppServ\MySQL\share\charsets\ | +--------------------------+----------------------------------+ 8 rows in set (0.00 sec) mysql> SHOW VARIABLES LIKE 'collation_%'; +----------------------+-----------------+ | Variable_name | Value | +----------------------+-----------------+ | collation_connection | utf8_general_ci | | collation_database | utf8_general_ci | | collation_server | utf8_general_ci | +----------------------+-----------------+ 3 rows in set (0.00 sec) 3..在Dreamweaver CS3新建php页面时有以下代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 4..进入http://localhost/phpmyadmin/页面显示: localhost 服务器版本: 5.0.45-community-nt-log Protocol version: 10 MySQL 字符集: UTF-8 Unicode (utf8) MySQL 连接校对:utf8_general_ci phpMyAdmin - 2.10.2 MySQL client version: 5.0.37 Language: 中文-Chinese simplified 其中,打开了数据库列表显示如下: 数据库 整理 mymy2012 utf8_general_ci mysql utf8_general_ci phpmyadmin utf8_bin test utf8_general_ci 统计: 4 utf8_general_ci

参考技术A 将浏览器中的编码改成utf-8,数据库中也是。在php页面首行加上header("Content-type:
text/html;
charset=utf-8");,必须首行,前面不能有输出。
还有,在查询数据库时加上:mysql_query(set
names
utf-8);

列未显示在 PHP 查询中,但显示在 MariaDB 的 phpmyadmin 界面中

【中文标题】列未显示在 PHP 查询中,但显示在 MariaDB 的 phpmyadmin 界面中【英文标题】:Columns are not shown in PHP querty but are shown in the phpmyadmin interface for MariaDB 【发布时间】:2018-06-06 19:35:18 【问题描述】:

我编写了一个简单的 PHP 脚本来为我提供一些数据,但我无法显示所有列(作为 JSON 字符串),但在最新 MariaDB 的 PHPmyadmin 前端中显示了所有列。这个错误的有趣之处在于,通过相同的脚本,另一个查询(不同的 POST 变量值)显示了所有预期的列。在第一个查询中,顺序也会变得混乱。

我在 PHP 脚本中的结果:

"id":"2","name":"it","mail":"john.doe@contoso.com","surname":"john"

预期结果(在 Phpmyadmin 中也显示为以正确查询顺序排列的行):

"id":"2","name":"john","surname":"doe", "department":"it","mail":"john.doe@contoso.com"

我可以用一些肮脏的技巧(最后一个选项)修复订单错误,但列是真正的问题。 MariaDB 或/和 PHP 中是否有列限制?我不确定要寻找什么来解决此错误。

PS:我用谷歌搜索了一下,官方 MariaDB 网站上有人说有一个 1000(我使用相同的存储引擎)列限制。我也查了

    while($r = mysqli_fetch_assoc($sth))
    
    $rows[] = $r;
    

while($r = mysqli_fetch_array($sth))$rows[] = $r;

第二个选项给了我我想收到的一切,但它仍然不是我想要的结果,因为一切都是duplicated。此循环之后的唯一行是

echo json_encode($rows);
mysqli_close($link);?>

我和社区发现了什么:

1.$rows[0] = $r; >>只显示一条记录,但格式仍然不正确。

    array_push($rows,$r); >> 不能解决问题。

    echo json_encode($rows[0]);print_r($rows[0]) >> "ID":"6","Name":"IT Department","Surname":"Doe","Email":"john.doe@contoso.com","‌​DeparmentRole":"Main‌​tanacei","Available"‌​:"Everyday from 8am to 17pm","Phone Number":"44 1206 256000","Office":"A1-Maitanance","CompanyRank":"standard employee" 和 print_r 相同。

【问题讨论】:

如果你使用$rows[0] = $r;会怎样 结果是一样的。 array_push($rows,$r); 也不能解决问题。 请同时提供echo json_encode($rows[0]);print_r($rows[0]); echo result: "ID":"6","Name":"IT Department","Surname":"Doe","Email":"john.doe@contoso.com","DeparmentRole":"Maintanacei","Available":"Everyday from 8am to 17pm","Phone Number":"44 1206 256000","Office":"A1-Maitanance","CompanyRank":"standard employee" print_r 的数据是相同的,只是格式不同(Array([ID]=&gt;6,...)。当我将完全相同的查询复制到 phpmyadmin 界面并在数据库中运行时,我获取其他列,并且值在正确的位置(名称>约翰,部门=> IT,...)。 @Hackerman 问题解决了。 【参考方案1】:

所以仔细观察就成功了。我创建了两个具有相同列名的表。当我们有两列时没有错,但是当我们加入它们时,我们会遇到真正的混乱,原来的列已经被加入的那一列覆盖了,还解释了什么,为什么顺序混乱。所以记住可以“独立”的表中拥有两列OK,但是当加入它们时,所有列都必须具有唯一性名称。我不明白的是,为什么 AS 关键字无法使用别名显示它并采用常规列名。

【讨论】:

以上是关于php显示中文乱码,phpmyadmin里的MySQL数据库中文乱码,如何解决?的主要内容,如果未能解决你的问题,请参考以下文章

向phpmyadmin中导入sql文件出现乱码怎样解决啊

phpmyadmin里MySQL字符集:cp1252 West European (latin1) ,解决乱码问题

mysql字段注释乱码其他正常

phpmyadmin 配置完全后为啥显示的是 Index of /phpmyadmin

PLSQL 表备注,存储过程里的中文都显示乱码,请问怎么处理?

电脑里的软件名称都是乱码?这是怎么回事?该怎么解决啊?