mysql无法插入中文 之前set names gbk;或者 gb2312 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 应该是配置的问题,谁能给我个详细的配置信息啊!!!!跪求我的是用apache2+php5+mysql5的,信息如下mysql> SHOW VARIABLES LIKE 'character_set_%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | gbk | | character_set_connection | gbk | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | gbk | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | D:/PHP/mysql/share/charsets| +--------------------------+----------------------------+ 8 rows in set (0.00 sec) mysql> SHOW VARIABLES LIKE 'collation_%'; +----------------------+-------------------+ | Variable_name | Value | +----------------------+-------------------+ | collation_connection | gbk_chinese_ci | | collation_database | latin1_swedish_ci | | collation_server | latin1_swedish_ci | +----------------------+-------------------+ 3 rows in set (0.00 sec)这里面的latin1 和 latin1_swedish_ci不知如何改为gbk和gbk_chinese_ci 用yueliangdao0608((深圳PHPER)) 提出的方法,写个简单的例子$link = mysql_connect('数据库服务器地址', 'mysql_user', 'mysql_password');if (!$link) { exit('Could not connect: ' . mysql_error());}if(!@mysql_select_db('需要操作的数据库名', $link)) { exit("cannot use database ".$link);}@mysql_query('set names gbk',$link); 同上一定要加 mysql_query('set names gbk',$link);我以前也是为了这个问题苦恼了很久在mysql5里只有这样才能显示中文之前版本好像没有这个问题。 应该不会出现这样的问题的吧,MySQL只会使数据变变成乱码吧?难道说,是你的MySQL安装不完全?? mysql_query('set names gbk'),相当于向mysql数据库服务器声明PHP向它发送的数据是采用gbk编码,这就相当于我们的web服务器可以向浏览器header声明下面的文档是采用什么编码一样,如果没有声明的话,浏览器只能猜了,所以我们一定在浏览网页时遇到过字符乱码显示的情况。 这个数据库其实也一样的,如果不这么声明,mysql数据库多数会认为是latin-1编码的,你应该根据实际情况,你当前PHP所处理数据的编码是什么,就应该用它向数据库声明,当然数据库的表中所对应的编码最好和这个编码一样。因为你可能要用到相应的整理去排序,去找关键字…… 只要理解了这个,也就不难理解上面的一些情况了,不知道我有没有说错,说错了还望高手校正,谢谢…… 加引号INSERT INTO users (uname) VALUES('".$_POST['puname']."'); 问题已解决,就是在之前加“set names 'gbk'”但还有一点就是,就是mysql的语言配置 一个PHP多标查询的问题 简单的变量问题 PHP如何获得raidio选中的value值? 国外网站信用卡支付流程? 运行源码,出现 ZEND ,这是为什么? 这个替换链接的正则怎么写 GD库的问题 动态数组问题,请指教。 请问用php怎么遍历页面中表单的每个文本框? 请问如何用phpmyadmin导入文本数据? PHP上传问题 Fckeditor在php中上传路径动态怎么实现
我的是用apache2+php5+mysql5的,信息如下
mysql> SHOW VARIABLES LIKE 'character_set_%'; +--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | gbk |
| character_set_connection | gbk |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | gbk |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | D:/PHP/mysql/share/charsets|
+--------------------------+----------------------------+
8 rows in set (0.00 sec) mysql> SHOW VARIABLES LIKE 'collation_%';
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | gbk_chinese_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)这里面的latin1 和 latin1_swedish_ci不知如何改为gbk和gbk_chinese_ci
if (!$link) {
exit('Could not connect: ' . mysql_error());
}
if(!@mysql_select_db('需要操作的数据库名', $link)) {
exit("cannot use database ".$link);
}
@mysql_query('set names gbk',$link);
一定要加 mysql_query('set names gbk',$link);
我以前也是为了这个问题苦恼了很久在mysql5里只有这样才能显示中文
之前版本好像没有这个问题。
这个数据库其实也一样的,如果不这么声明,mysql数据库多数会认为是latin-1编码的,你应该根据实际情况,你当前PHP所处理数据的编码是什么,就应该用它向数据库声明,当然数据库的表中所对应的编码最好和这个编码一样。因为你可能要用到相应的整理去排序,去找关键字……
只要理解了这个,也就不难理解上面的一些情况了,不知道我有没有说错,说错了还望高手校正,谢谢……