数据过多,中文乱码 本帖最后由 kerryhe 于 2012-12-22 22:28:00 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先检查一下字符集设置。特别是CLINET端的字符集设置。http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspxMySQL 中文显示乱码 问题是我的程序和文档都是UTF8的编码,数据库也是UTF8字符集的,大部分数据插入都是正常的,乱码的都是插入的数据字符比较多的(比如一片几万字的文章,insert进去就会乱码),我就是怀疑是数据量过大造成的乱码,不知何解? mysql> show full fields from ff_test_vod -> ;+-------------------+-----------------------+-----------------+------+-----+---------+----------------+---------------------------------+---------+| Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |+-------------------+-----------------------+-----------------+------+-----+---------+----------------+---------------------------------+---------+| vod_id | mediumint(8) unsigned | NULL | NO | PRI | NULL | auto_increment | select,insert,update,references | || vod_cid | smallint(6) | NULL | NO | MUL | 0 | | select,insert,update,references | || vod_name | varchar(255) | utf8_general_ci | NO | | NULL | | select,insert,update,references | || vod_title | varchar(255) | utf8_general_ci | NO | | NULL | | select,insert,update,references | || vod_keywords | varchar(255) | utf8_general_ci | NO | | NULL | | select,insert,update,references | || vod_color | char(8) | utf8_general_ci | NO | | NULL | | select,insert,update,references | || vod_actor | varchar(255) | utf8_general_ci | NO | | NULL | | select,insert,update,references | || vod_director | varchar(255) | utf8_general_ci | NO | | NULL | | select,insert,update,references | || vod_content | text | utf8_general_ci | NO | | NULL | | select,insert,update,references | || vod_pic | varchar(255) | utf8_general_ci | NO | | NULmysql> show variables like 'char%' -> ;+--------------------------+---------------------------------------------------------+| Variable_name | Value |+--------------------------+---------------------------------------------------------+| character_set_client | utf8 || character_set_connection | utf8 || character_set_database | utf8 || character_set_filesystem | binary || character_set_results | utf8 || character_set_server | utf8 || character_set_system | utf8 || character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.1\share\charsets\ |+--------------------------+---------------------------------------------------------+8 rows in set (0.00 sec)用的PERL链接MYSQL$dbh = DBI->connect("DBI:mysql:database=".$dbname.";host=".$location1, $db_user, $db_pass);$sql="INSERT INTO $table1(vod_name) VALUES ( '$ys_name')"; $dbh->{LongReadLen} = 5242880; $dbh->do("SET NAMES 'utf8'"); $sth = $dbh->prepare($sql); $sth->execute();insert进去有点记录正常,有的记录不正常。乱码的都是插入字段数据比较大的。 是不是你的SQL语句最大长度限制? 检查一下MYSQL的 max_allowed_packet 设置 解决了。我把SQL语句写入到一个文本,然后再读取这个文本,把SQL写入数据库就没有乱码,估计还是PERL什么地方的问题,但是不知道具体出错的原因。谢谢各位大大。 MySQL创建function时出错 mysql服务无法启动 mysql存储图形文件的问题 也是乱码问题,头疼啊,请教各位! mysql连接问题 postger如何备份数据库 怎麼不能連接到 Linux 下的 Mysql( 只能用Localhost ) mysql 5.6 windows 绿色版本 改不了密码,创建不了数据库 mysql启动1067错误 MySql 时间差计算问题(毫秒) MySQL每次登录显示密码不对 在MySQl里运行sqlserver语句出错,怎么改~
MySQL 中文显示乱码
问题是我的程序和文档都是UTF8的编码,数据库也是UTF8字符集的,大部分数据插入都是正常的,乱码的都是插入的数据字符比较多的(比如一片几万字的文章,insert进去就会乱码),我就是怀疑是数据量过大造成的乱码,不知何解?
-> ;
+-------------------+-----------------------+-----------------+------+-----+----
-----+----------------+---------------------------------+---------+
| Field | Type | Collation | Null | Key | Def
ault | Extra | Privileges | Comment |
+-------------------+-----------------------+-----------------+------+-----+----
-----+----------------+---------------------------------+---------+
| vod_id | mediumint(8) unsigned | NULL | NO | PRI | NUL
L | auto_increment | select,insert,update,references | |
| vod_cid | smallint(6) | NULL | NO | MUL | 0
| | select,insert,update,references | |
| vod_name | varchar(255) | utf8_general_ci | NO | | NUL
L | | select,insert,update,references | |
| vod_title | varchar(255) | utf8_general_ci | NO | | NUL
L | | select,insert,update,references | |
| vod_keywords | varchar(255) | utf8_general_ci | NO | | NUL
L | | select,insert,update,references | |
| vod_color | char(8) | utf8_general_ci | NO | | NUL
L | | select,insert,update,references | |
| vod_actor | varchar(255) | utf8_general_ci | NO | | NUL
L | | select,insert,update,references | |
| vod_director | varchar(255) | utf8_general_ci | NO | | NUL
L | | select,insert,update,references | |
| vod_content | text | utf8_general_ci | NO | | NUL
L | | select,insert,update,references | |
| vod_pic | varchar(255) | utf8_general_ci | NO | | NUL
mysql> show variables like 'char%'
-> ;
+--------------------------+----------------------------------------------------
-----+
| Variable_name | Value
|
+--------------------------+----------------------------------------------------
-----+
| character_set_client | utf8
|
| character_set_connection | utf8
|
| character_set_database | utf8
|
| character_set_filesystem | binary
|
| character_set_results | utf8
|
| character_set_server | utf8
|
| character_set_system | utf8
|
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.1\share\chars
ets\ |
+--------------------------+----------------------------------------------------
-----+
8 rows in set (0.00 sec)
用的PERL链接MYSQL
$dbh = DBI->connect("DBI:mysql:database=".$dbname.";host=".$location1, $db_user, $db_pass);
$sql="INSERT INTO $table1(vod_name) VALUES ( '$ys_name')";
$dbh->{LongReadLen} = 5242880;
$dbh->do("SET NAMES 'utf8'");
$sth = $dbh->prepare($sql);
$sth->execute();insert进去有点记录正常,有的记录不正常。乱码的都是插入字段数据比较大的。
我把SQL语句写入到一个文本,然后再读取这个文本,把SQL写入数据库就没有乱码,估计还是PERL什么地方的问题,但是不知道具体出错的原因。
谢谢各位大大。