如果出现这种问题,当您在phpmyadmin中查看存储库时,您发现所有系统都是utf-8配置的,但中间的字符仍然是乱码的。
这是因为,尽管mysql本身和网页是utf-8,但xoops仍会在latin1中将数据传递给mysql,最后将utf-8数据以latin1格式存储在数据库中。
其实在xoops上看没什么问题,但在phpmyadmin上看,都是乱码,很难管理。
以下是环境。
mysql: 5.1.22
mysql字符编码: utf-8 unicode
mysql连接校准: utf-8_unicode_ci
所有数据库都是用utf-8创建的。
phpmyadmin :2.11.3 (语言选择“中文-频道培训”) ) )。
xoops 2.0.17.1
针对这种情况,解决的一些方法:
1. mysql设置:
/etc/my.cnf (或windows下的my.ini )需要以下设置:
代码示例:的副本
[客户端]
默认角色集=utf8
[mysqld]
默认角色集=utf8
init_connect='set names utf8 '
在xoops方面,以前在http://xoops.org.cn上告诉我大家都在
xoops/class/database/mysqldatabase.PHP参与了以下:行
@MySQL_query('setnames'utf8 ' ',$this-conn );
(将此行添加到$result=MySQL_query ) $SQL,$this-conn ); 前)
可以强制通过utf8传输。
3. mysql数据库:
但是,如果有旧的数据库怎么办? 使用上述方法进行更改后,进入xoops后,所有以前的中文字都将变为乱码,新输入或重新输入的中文字将正常显示。
没关系。 可以按照以下步骤将以前的数据库转码为:
首先,使用以下方法将数据库dump到:
代码示例:的副本
mysqldump---- all-databases---- default-character-set=latin1-uroot-pdump.SQL
修改dump.sql文件主页上的:
//! 40101 set names latin1 */;
中选择所需的墙类型
//! 40101 set names utf8 */;
如果返回数据库import,则为:
mysql -u root -p dump.sql
请尝试重新打开xoops。 中文都可以。
即使进入phpmyadmin,也不会乱码。