有经常使用表单进行传递字符串到数据库的经验的朋友可能会遇到这样一个问题:数据库获取到前台页面显示都是正常的(不是乱码),但是当使用表单传递值到执行页面插入到数据库的时候会出现无法插入,一般有如下提示:Data too long for column ‘表名’ at row 1 的提示,或者成功插入,但是显示出来中文是乱码。如果出现以上情况,,可以使用以下方法:
1、在连接数据库的代码处加上mysql_query(“set names ‘gbk’”) 或者mysql_query(“set names ‘UTF8′”);
2、修改数据库配置文件,把默认的字符编码改为gbk,(default_charset)
3、在页面输出之前使用 header(‘Content-Type:text/html;charset=UTF-8′);指定编码为UTF-8;
4、对表单传递的值进行编码强制转换,如我要传递的是keyword,则
$keyword=urldecode($_POST["kw"]);
$keyword=mb_convert_encoding($keyword, ‘GB2312′, ‘UTF-8′);