Mat*_*att 9 mysql encoding utf-8
我昨天几个小时一直在听这个问题:
我在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脚本:
现在,我想将此数据库导出到在MySQL 5.0.67上运行的另一台服务器,同时将服务器编码设置为"UTF-8 Unicode(utf8)".我复制了整个CMS Made Simple安装,复制了dump.sql脚本并运行了"mysql -h ddd -u zzz -p dbname <dump.sql".之后,在显示CMSMS网页时,所有字符都会被加扰.
我尝试设置:
SET character_set_client = utf8;
SET character_set_connection = latin2;
和所有组合(只是为了安全,即使它对我没有任何意义):latin2/utf8,latin2/latin2,utf8/utf8等 - 没有帮助.所有角色仍然在争吵,但有时以不同的方式:).
我还尝试用脚本中的utf8替换所有latin2设置(为表设置名称和默认字符集).没有.
这里有没有MySQL专家可以用几句话来解释(我相信它毕竟很简单)这整个编码的东西真的有用吗?我看了9.1.4.连接字符集和排序,但没有找到任何帮助.
谢谢,马特
kol*_*rie 30
您是否尝试添加--default-character-set = name选项,如下所示:
mysql --default-character-set=utf8 -h ddd -u zzz -p dbname < dump.sql
Run Code Online (Sandbox Code Playgroud)
之前我遇到过这个问题,并且在使用该选项后它起作用.
希望能帮助到你!
呃...好吧,看来我找到了解决方案。
MySQL 并不是罪魁祸首。我现在做了一个简单的转储和加载,没有对 dump.sql 脚本进行任何更改 - 这意味着我保留了“设置名称 latin2”和表字符集原样。然后我将原来的 CMSMS 安装切换到新数据库并且......它工作正常。所以实际上数据库中的编码是可以的,或者至少它与我在旧托管提供商处安装的 CMSMS 一起工作得很好(CMSMS 显然对字符编码做了有趣的事情)。
为了使其在我的新托管提供商上工作,我实际上必须将此行添加到 CMSMS 安装中的 lib/adodb/drivers/adodb-mysql.inc.php 中:
mysql_query('设置名称 latin2',$this->_connectionID);
这是对这篇文章稍作修改的解决方案。您也可以在那里找到确切的线路。所以看起来像是 mysql 客户端配置问题。
归档时间: |
|
查看次数: |
15901 次 |
最近记录: |