【问题标题】:PhpMyAdmin displays characters incorrectlyPhpMyAdmin 显示字符不正确
【发布时间】:2012-12-09 21:07:33
【问题描述】:

当我尝试浏览表格或进行查询时,PhpMyAdmin 无法正确显示字符(或按我希望的方式显示)。但是,如果 'SET NAMES LATIN1;',一切都会正确显示包含在查询之前。此外,使用命令行客户端时,一切都在服务器端正确显示。我试图在 phpMyAdmin 首页上将 MySQL 连接排序规则设置更改为 latin1,但它没有效果。我不明白为什么会这样。这是由通信问题或双重编码引起的还是什么?

MySql 服务器设置(来自命令行客户端):

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| 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                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | latin1_swedish_ci |
| collation_database   | latin1_swedish_ci |
| collation_server     | latin1_swedish_ci |
+----------------------+-------------------+

【问题讨论】:

  • 您能举例说明“不正确”是什么意思吗?
  • 例如:lisätiedot(应该是lisätiedot)
  • 还要检查您的浏览器在显示该页面时使用的编码。可能是服务器发送了错误的字符集标题,页面在meta 元素中设置不正确,或者搜索结果使用与页面其余部分不同的编码输出,导致浏览器的编码检测失败。跨度>

标签: mysql character-encoding phpmyadmin


【解决方案1】:

在您的查询上方添加ini_set('default_charset', 'UTF-8');

或者,如果您使用的是 mysqli:

$dbc = mysqli_connect($host, $user, $password, $database)
    or die('Error connecting to the database');

if (!mysqli_set_charset($dbc, "utf8")) {
    printf("Error loading character set utf8: %s\n", mysqli_error($dbc));
} else {
    printf("Current character set: %s\n", mysqli_character_set_name($dbc));
}

【讨论】:

  • 我建议在您的/etc/my.cnf 中设置default-character-set=utf8。要更改您当前的数据库:ALTER DATABASE your_db_name charset=utf8;
  • 我正在尝试使用 phpMyAdmin 导出数据,因此我无法在其中插入任何 php 命令。此外,由于我使用的是第三方托管服务,因此无法编辑 my.cnf。我尝试使用 cpanel mysql dump 导出数据,但导出文件中的文本是乱码。这是否意味着数据库中的数据是乱码?
  • 我设法使用带有字符集参数的 mysqldump 命令正确导出数据:mysqldump --default-character-set=latin1。将数据库转换为 utf-8 后,一切都正确显示。但是,我仍然不明白为什么 phpMyAdmin 无法正常使用 latin1 数据库。
  • 你能执行SQL命令吗?您可以尝试ALTER DATABASE your_db_name charset=utf8; 看看它是否仍然给出相同的废话.. phpMyAdmin 使用其 php.ini 设置中定义的默认字符集,目前与您的数据库不同:-)
猜你喜欢
  • 1970-01-01
  • 2018-05-09
  • 1970-01-01
  • 2015-08-08
  • 2017-05-09
  • 2011-10-16
  • 2012-01-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多