gpt4 book ai didi

mysql - 如何在phpMyAdmin中显示UTF-8字符?

转载 作者:行者123 更新时间:2023-11-29 21:31:11 26 4
gpt4 key购买 nike

我已将数据库正确设置为 UTF-8,并且正在处理包含日语字符的数据库。如果我从 mysql 命令行执行 SELECT *...,我可以正确地看到日语字符。当从数据库中提取数据并将其显示在网页上时,我可以正确地看到它。

但是,当在 phpMyAdmin 中查看表数据时,我只看到垃圾文本。即。

噗—噗噗噗-™噗噗噗噗噗噗噗噗—噗噗噗-™噗噗...

如何让 phpMyAdmin 显示日文字符?

HTML页面上的字符编码设置为UTF-8。

编辑:

我尝试导出数据库并在 geany 中打开 .sql 文件。即使编码设置为UTF-8,字符仍然是乱码。 (但是,对数据库进行mysqldump也显示乱码)。

数据库和所有表的字符集设置正确(在文件中的任何位置都找不到“拉丁语”)

CREATE DATABASE `japanese` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

我已将这些行添加到 my.cnf 并重新启动 mysql,但没有任何变化。我正在使用 Zend Framework 将数据插入数据库。

我将为这个问题悬赏,因为我真的很想弄清楚这个问题。

最佳答案

不幸的是,phpMyAdmin 是第一个与 MySQL 正确讨论字符集的 PHP 应用程序之一。您的问题很可能是由于数据库一开始就没有存储正确的 UTF-8 字符串。

为了在phpMyAdmin中正确显示字符,数据必须正确存储在数据库中。但是,将数据库转换为正确的字符集通常会破坏不了解 MySQL 提供的字符集相关功能的 Web 应用程序。

请问:MySQL > 版本是4.1吗?该数据库用于什么网络应用程序? phpBB?数据库是从旧版本的 Web 应用程序还是旧版本的 MySQL 迁移的?

如果您使用的网络应用程序太旧且不受支持,我的建议是不要兄弟。仅当您确定 Web 应用程序可以正确读取数据库时,才将数据库转换为真正的 UTF-8。

<小时/>

编辑:

您的 MySQL 版本 > 4.1,这意味着它支持字符集。您的数据库的字符集排序规则设置是什么?我很确定您正在使用latin1 ,这是 ASCII 的 MySQL 名称,用于将 UTF-8 文本以“字节”形式存储到数据库中。

对于字符集不敏感的客户端(即 mysql-cli 和 php-mod-mysql),字符可以正确显示,因为它们是以字节的形式传入/传出数据库的。在 phpMyAdmin 中,字节被读取并显示为 ASCII 字符,这就是您看起来的垃圾文本。

几年前(2005 年?)当 MySQL 4.0 在亚洲许多地区过时时,已经花费了无数时间。有一种标准方法可以处理您的问题和大量数据:

  1. 将数据库备份为 .sql
  2. 在支持 UTF-8 的文本编辑器中打开它,确保它们看起来正确。
  3. 寻找charset collation latin1_general_ci ,替换latin1utf8 .
  4. 另存为新的 sql 文件,不要覆盖您的备份
  5. 导入新文件,它们现在将在 phpMyAdmin 中正确显示,并且您的网络应用程序上的日语将变成问号。这很正常。
  6. 对于依赖 php-mod-mysql 的 php Web 应用程序,插入 mysql_query("SET NAMES UTF8");之后mysql_connect() ,现在问号就消失了。
  7. 添加以下配置my.ini对于 mysql-cli:

    # CLIENT SECTION
    [mysql]
    default-character-set=utf8
    # SERVER SECTION
    [mysqld]
    default-character-set=utf8

更多关于MySQL字符集的信息,请引用手册: http://dev.mysql.com/doc/refman/5.0/en/charset-server.html

请注意,我假设您的网络应用程序正在使用 php-mod-mysql 连接到数据库(因此是 mysql_connect() 函数),因为 php-mod-mysql 是我能想到的唯一仍会触发问题的扩展到今天。

phpMyAdmin 使用 php-mod-mysqli 连接到 MySQL。我从未学习过如何使用它,因为切换到框架*来开发我的 php 项目。我强烈鼓励您也这样做。

  • 许多框架,例如CodeIgniter、Zend、使用mysqli或pdo连接数据库。 mod-mysql 函数被认为是过时的,导致性能和可扩展性问题。此外,您不想将您的项目与特定类型的数据库联系起来。

关于mysql - 如何在phpMyAdmin中显示UTF-8字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35252485/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com