phpmyadmin显示奇怪的字符(utf8) [英] phpmyadmin displaying weird chars (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屋!