使用sqlyog查看中文字段都是乱码,查看了下mysql变量:
character_set_filesystem=binary
character_set_database=latin1
character_set_server=latin1
character_set_system=utf8请问
character_set_client
character_set_connection
character_set_results
这3个变量如何设置才能正确显示中文还是有什么别的办法。
谢谢了
character_set_filesystem=binary
character_set_database=latin1
character_set_server=latin1
character_set_system=utf8请问
character_set_client
character_set_connection
character_set_results
这3个变量如何设置才能正确显示中文还是有什么别的办法。
谢谢了
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码
入库数据编码是gbk
set names 'UTF8';
都试过没效果
还是解决不了问题
表结构:CREATE TABLE `song` (
`songid` int(1) NOT NULL default '0',
`songname` varchar(100) NOT NULL,
PRIMARY KEY (`songid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
其中字段‘songname’为'latin1_swedish_ci'
入库的编码是gbk,按理说 set names 'gbk' 应该能正确显示,但是现在还是不行
如果你能重现当时写数据时的客户终端的编码及当时写数据时的set names '当时的编码',那这个表的数据才能正常显示处理。
[mysql]
default-character-set=utf8
[mysqld]
default-character-set=utf8都加入这两行重启mysql 服务然后重新创建表 记得一定要重新创建
你就会发现create table
CREATE TABLE `forum` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '',
`content` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '',
`date` date NOT NULL DEFAULT '0000-00-00',
`name` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '',
`email` varchar(255) COLLATE utf8_bin DEFAULT '',
PRIMARY KEY (`Id`)
) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COLLATE=utf8_bin
如果你的表是utf8的而个别vachar列是latin的
mysql> show create table tb;
+-------+-----------------------------------------------------------------------
---------------------------------------------------+
| Table | Create Table
|
+-------+-----------------------------------------------------------------------
---------------------------------------------------+
| tb | CREATE TABLE `tb` (
`rid` int(11) DEFAULT NULL,
`con` varchar(5) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+-----------------------------------------------------------------------
---------------------------------------------------+
1 row in set (0.00 sec)mysql> alter table tb change con con varchar(5) character set utf8 default null
;
Query OK, 7 rows affected (0.14 sec)
Records: 7 Duplicates: 0 Warnings: 0mysql> show create table tb;
+-------+-----------------------------------------------------------------------
----------------------------------------------------------------------+
| Table | Create Table
|
+-------+-----------------------------------------------------------------------
----------------------------------------------------------------------+
| tb | CREATE TABLE `tb` (
`rid` int(11) DEFAULT NULL,
`con` varchar(5) CHARACTER SET utf8 DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+-----------------------------------------------------------------------
----------------------------------------------------------------------+
1 row in set (0.00 sec)
这样避免乱码问题
default_character_set=gb2312;
set character_set_result='gb2312';
查询结果:show variables like'character_set_%';
安装MySQL的时候,最好将客户端字符集设置为gbk或gb2312。也可以在建表的时候设置,如:create table table_name(opt1,opt2,...) default charset=gb2312或gbk。
还有就是服务器端collation也设为gbk或gb2312的。否则,就算你设置完.ini配置文件,客户端显示的依然是乱码。