我也是这样的问题,已经解决 用最新版本的phpMyAdmin或者Mysql Administrator管理Mysql 4.1.x 执行数据库查询前,先执行以下语句: SET CHARACTER SET utf8 然后进行数据库查询,这仅在PHP环境下试过,其他语言不知是否可行<?phprequire_once "./include/classes/phplib/db_mysql.inc";$db = new DB_Sql(); //连接数据库 $db->connect("test","localhost","root",""); //执行查询 $db->query("SET CHARACTER SET utf8"); $sql = "select * from `tablename`"; $sql .= "ORDER by `id` DESC LIMIT 0,10"; $db->query($sql); ...... ?>
不过能不能解释的再清楚一些?例如我数据表中有这样的一个字段User_Name CHAR(50)在Mysql 4.0.x中默认的是GB2312编码,现在导入到Mysql 4.1.x中后,该字段显示乱码(Mysql 4.1.x设置utf-8为默认编码)。我现在想把这个字段的内容转变为utf-8编码存放,你的“把charset改为binary”具体是怎么操作的?是在导入前修改表结构,再导入Mysql 4.1.x?还是导入后修改?谢谢。
说的方法把问题解决了吗?
varbinary和以前的varchar是对应的.
用最新版本的phpMyAdmin或者Mysql Administrator管理Mysql 4.1.x
执行数据库查询前,先执行以下语句:
SET CHARACTER SET utf8
然后进行数据库查询,这仅在PHP环境下试过,其他语言不知是否可行<?phprequire_once "./include/classes/phplib/db_mysql.inc";$db = new DB_Sql();
//连接数据库
$db->connect("test","localhost","root","");
//执行查询
$db->query("SET CHARACTER SET utf8");
$sql = "select * from `tablename`";
$sql .= "ORDER by `id` DESC LIMIT 0,10";
$db->query($sql);
......
?>
首先需要确定Mysql的charset是否全为utf8;
使用mysql> show variables like 'char%';
显示:
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
7 rows in set (0.00 sec)
才说明mysql完全的支持UTF8编码。