PhpMyAdmin
From LeakonWiki
解决 PhpMyAdmin 字符乱码问题
PMA 强制使用 utf8 字符集连接 MySQL,忽略服务器本身的设置,以及 MySQL connection collation 的设置。
解决方法
找到 libraries/database_interface.lib.php 文件,找到下述代码,全部注释掉。
if (! empty($GLOBALS['collation_connection'])) {
PMA_DBI_query("SET CHARACTER SET 'utf8';", $link, PMA_DBI_QUERY_STORE);
$mysql_charset = explode('_', $GLOBALS['collation_connection']);
PMA_DBI_query("SET collation_connection = '" . PMA_sqlAddslashes($GLOBALS['collation_connection']) . "';", $link, PMA_DBI_QUERY_STORE);
} else {
PMA_DBI_query("SET NAMES 'utf8' COLLATE 'utf8_general_ci';", $link, PMA_DBI_QUERY_STORE);
}
看这段代码,他一定会强制设置 utf8 字符集的,注释掉,可以跳过这个设置。
打开 PMA 的 Variables 标签,能看到下面的几项配置:
character set client latin1 character set connection latin1 character set database latin1 character set filesystem binary character set results latin1 character set server latin1 character set system utf8
根据你的程序和服务器环境要求,想办法让这几项改为正确值,就能保证 PMA 字符集正确显示。
在我的这个项目环境中,服务器和数据库都是 latin1,修改 PMA 之前,看 Variables,"character set connection" 和 "character set results" 都被橘红色高亮,提示我全局设置是 latin1,但当前设置是 utf8,因此不论我怎么修改浏览器的字符集,都不能正确显示中文。
另外需要注意的地方,你要确定写入数据库的文字用的是什么字符集,比如你是把 gbk 字符写入数据库,那浏览器也应该设置为 gbk。
其实不难理解,数据库和表、字段,设置为任何字符集都可以,他就是一个数据的存储媒介,就好像一个文本文件,可以存到软盘、硬盘、DVD上,随你怎么存,文件里面的内容是固定不变的,你用 word 编辑的文件,那就要用 word 打开,用 ultraedit 打开一定是乱码。

