我的网页指定gb2312编码,mysql的character_set_client,character_set_connection,character_set_results都是指定为gb2312,数据库跟表指定为utf-8,结构是一个add_article.php和save_article.php,add_article.php指定为gb2312,save_article.php中如果加了set names这个语句就添加不了,如果没加就能添加,但是添进去的却是乱码,不知怎么回事,先谢大家,帮个忙,搞了好几天了。
你的是set names gb2312吧?
在执行sql前以gb2312编码打印sql语句,你就会发现问题。
1. 对页面数据保存时进行转码,比如对某个字符变量使用转码函数iconv("GB2312","UTF-8",$_POST['name']) GB2312转UTF-8等进行编码转换;
2. 页面和数据库统一编码规范。不过话说回来,对字符转码是php编程中最为常见的,建议楼主试试!
1. 你先看看当你保存数据之前取到的数据是不是乱码,如果是说明页面传参过来的变量就是乱码,试试转换编码格式
2. 如果 1. 你得到的答案不是乱码,那就是存入数据库是乱码,在这个地方处理转换编码格式至于用那个转换字符 编码格式合适, php这样的函数很多,建议楼主挨个试试,这样既熟悉了转码函数又可以解决问题。
并且在gb2312编码下sql打印出来没有乱码,那么存到数据库中的就是正确地。如果还是有问题你就要看是不是你查询数据库的地方出错,而并不是插入数据出错。一步步来,逐步锁定出问题的位置。
并且在gb2312编码下sql打印出来没有乱码,那么存到数据库中的就是正确地。如果还是有问题你就要看是不是你查询数据库的地方出错,而并不是插入数据出错。一步步来,逐步锁定出问题的位置。
my_query("set names gb2312");