phpmyadmin显示奇怪的字符(utf8) [英] phpmyadmin displaying weird chars (utf8)

查看:79
本文介绍了phpmyadmin显示奇怪的字符(utf8)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

因此,我已将mysql设置为全面支持utf8:

So I have set mysql for full utf8 support:

my.cnf:

[mysqld]
character_set_client=utf8
character-set-server=utf8
collation_server=utf8_general_ci

mysql> show variables like "char%";
+--------------------------+----------------------------+
| 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       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

mysql> show variables like "coll%";
+----------------------+-----------------+
| 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)

现在,我可以通过mysql查询在我的Web应用程序中正确存储和获取utf8字符(和json_encode),但是phpmyadmin存在问题.问题是phpmyadmin将这些国际字符显示为乱码.

Now, I correctly store and get (and json_encode) utf8 characters in my web app with my mysql queries but I have a problem with phpmyadmin. The problem is that phpmyadmin displays those international characters as garbled text.

έλεος

sadaa

为了澄清问题,我说的是新数据,不是已经存储的可能已损坏的数据.

just to clarify things out, I'm talking about NEW DATA, not already stored data which may be corrupted.

phpmyadmin的会话变量为:

the session variables for phpmyadmin are:

show variables like "char%";
Variable_name   Value   
character_set_client    utf8mb4
character_set_connection    utf8mb4
character_set_database  utf8
character_set_filesystem    binary
character_set_results   utf8mb4
character_set_server    utf8
character_set_system    utf8
character_sets_dir  /usr/share/mysql/charsets/

show variables like "coll%" 
Variable_name   Value   
collation_connection    utf8mb4_general_ci
collation_database  utf8_general_ci
collation_server    utf8_general_ci

到目前为止,我发现唯一的国际化utf8字符可以正确显示在phpmyadmin中,而不是乱码的文本是运行

The only way I have found till now for the international utf8 characters to display properly in phpmyadmin and not as garbled text is to run

SET NAMES utf8

每次在客户端应用(php)查询之前: a)很奇怪,因为如您所见,一切正常 b)我想避免每次都运行该查询

every time before a client app (php) query which: a) is weird because as you can see everything is properly utf8 b) i would like to avoid running that query every time

这是仅phpmyadmin的问题还是我的设置的常规数据编码问题?无论哪种方式,我该如何解决?最好仅使用配置文件设置,而不必每次都运行SET NAMES utf8查询.

is this a phpmyadmin only problem or a general data encoding problem with my settings? Either way, how can I solve this? Preferrably just with configuration files settings, not having to run the SET NAMES utf8 query each time.

提前谢谢.

推荐答案

回答我自己的问题.

似乎不是phpmyadmin问题,而是一般的编码问题.

It seems it was not a phpmyadmin problem but a general encoding problem.

问题是我没有设置客户端连接字符集.

The problem was I was not setting my client connection charset.

如果我显示了php文件中的变量,这就是我得到的:

here's what I got if I displayed the variables from a php file:

{"Variable_name":"character_set_client","Value":"latin1"}
{"Variable_name":"character_set_connection","Value":"latin1"}
{"Variable_name":"character_set_database","Value":"utf8"}
{"Variable_name":"character_set_filesystem","Value":"binary"}
{"Variable_name":"character_set_results","Value":"latin1"}
{"Variable_name":"character_set_server","Value":"utf8"}
{"Variable_name":"character_set_system","Value":"utf8"}
{"Variable_name":"character_sets_dir","Value":"\/usr\/share\/mysql\/charsets\/"}



{"Variable_name":"collation_connection","Value":"latin1_swedish_ci"}
{"Variable_name":"collation_database","Value":"utf8_general_ci"}
{"Variable_name":"collation_server","Value":"utf8_general_ci"}

最初,我尝试添加my.cnf

Initially i tried adding in my.cnf

[client]
default-character-set=utf8

它不起作用.

所以解决方案是添加:

charset=UTF8

在PDO初始化中

所以在那之后我得到了正确的变量值:

so after that I got the proper variable values:

{"Variable_name":"character_set_client","Value":"utf8"}
{"Variable_name":"character_set_connection","Value":"utf8"}
{"Variable_name":"character_set_database","Value":"utf8"}
{"Variable_name":"character_set_filesystem","Value":"binary"}
{"Variable_name":"character_set_results","Value":"utf8"}
{"Variable_name":"character_set_server","Value":"utf8"}
{"Variable_name":"character_set_system","Value":"utf8"}
{"Variable_name":"character_sets_dir","Value":"\/usr\/share\/mysql\/charsets\/"}



{"Variable_name":"collation_connection","Value":"utf8_general_ci"}
{"Variable_name":"collation_database","Value":"utf8_general_ci"}
{"Variable_name":"collation_server","Value":"utf8_general_ci"}

这篇关于phpmyadmin显示奇怪的字符(utf8)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆