昨天我为这个问题苦苦思索了几个小时:
我在 MySQL 4.1.22 服务器上有一个数据库,编码设置为“UTF-8 Unicode (utf8)”(如 phpMyAdmin 报告)。该数据库中的表的默认字符集设置为latin2。但是,使用它的 Web 应用程序(用 PHP 编写的 CMS Made Simple)显示的页面为utf8...
不管这可能有多糟糕,它确实有效。 Web 应用程序正确显示字符(主要使用捷克语和波兰语)。
我运行:“mysqldump -u xxx -p -h yyy dbname > dump.sql”。这给了我一个 SQL 脚本:
- 在任何编辑器(如 Notepad+)中显示时看起来都很完美UTF-8- 所有字符均正确显示
- 脚本中的所有表的默认字符集设置为latin2
- 它有“/*!40101 SET NAMES latin2 */;”行在开头(以及其他设置)
现在,我想将此数据库导出到另一台在 MySQL 5.0.67 上运行的服务器,服务器编码也设置为“UTF-8 Unicode (utf8)”。我复制了整个 CMS Made Simple 安装,复制了 dump.sql 脚本并运行“mysql -h ddd -u zzz -p dbname
我尝试设置:
设置字符集客户端=utf8;
设置字符集连接=拉丁2;
所有组合(为了安全起见,即使对我来说没有任何意义):latin2/utf8、latin2/latin2、utf8/utf8 等 - 没有帮助。所有字符仍然处于混乱状态,但有时以不同的方式:)。
我还尝试在脚本中用 utf8 替换所有 latin2 设置(设置表的名称和默认字符集)。没有什么。
这里有没有 MySQL 专家可以用几句话解释一下(我确信这毕竟很简单)整个编码的东西是如何工作的?我读9.1.4.连接字符集和排序规则 http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html但发现那里没有任何帮助。
谢谢,
马特
您是否尝试添加 --default-character-set=name 选项,如下所示:
mysql --default-character-set=utf8 -h ddd -u zzz -p dbname < dump.sql
我之前遇到过这个问题,使用该选项后它就起作用了。
希望能帮助到你!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)