【发布时间】:2015-04-20 00:00:04
【问题描述】:
不知何故,MySQL 数据库中的数据已经从 Unicode 转换为 ANSI,导致系统中的很多符号显示不正确。
符号现在显示如下:
- ——
- ?
- ¸
- Ω
- 等
我想将其转换回 Unicode...
我试过了:
- 将数据库重新导入为 UTF8 字符集
- 使用 Notepad++ “转换为 UTF8...”
- 将默认字符集 UTF8 添加到 Apache 配置...
- 一个 PHP 脚本,它获取所有数据库和表,复制它们,转换数据,然后重新创建原始数据库。
这些方法没有奏效......它们似乎只是让我的数据保持原样,但未来任何使用符号的尝试都可以正常工作。
我想将这些现有的误解转换回原来的形式!
数据库中示例文本的十六进制输出。
SELECT hex(name) FROM table_name where id = 17;
相当于:SELECT hex('☼STICKY☼');
输出:C3A2CB9CC2BC535449434B59C3A2CB9CC2BC
【问题讨论】:
-
你看到使用 phpMyAdmin 的错位字符了吗?有可能你mysql中的数据是正确的,只是你看不到正确。
-
数据显示来自 mysql 以及应用程序(浏览器)的“错位字符”。使用应用程序将符号放入数据库现在可以正常工作。现有的“错位字符”保持错位。直到本周早些时候,我一直在使用带有符号的数据库和应用程序。
-
使用phpMyAdmin会不会导致这种类型的编码错误???我试图理解为什么会这样。我觉得它发生在其他一些管理员使用 phpMyAdmin 执行导出/导入/备份/恢复...但它基本上只是在黑暗中拍摄。我不使用 phpMyAdmin 与我的数据库交互
-
我有类似的经历,所有内容都在网页上正确显示,但 phpMyAdmin 显示它就像在您的示例中一样。原来是php和mysql默认连接的问题,和phpMyAdmin一点关系都没有。
-
我在导出数据然后重新导入时也有类似的经历。使用 --default-character-set 是我在 mysqldump 命令中忘记的东西:mysqldump --host=
--user= --single-transaction --default-character-set=utf8 >
标签: mysql unicode utf-8 character-encoding mojibake