中文如果用表单提交的话,不会出现乱码,而用ajax提交就会出现乱码,这是什么原因呢?
我的理解是,我在写源码的时候,一般用记事本写,保存的时候默认用ansi编码,源码中也没有用“”或“header('content-type:text/html;charset=utf-8');”指定网页编码,于是在浏览器中显示时它的编码被认定为“gb2312”。当前台向后台传递数据的时候,用表单提交的话,前后台之间用“gb2312”编码交流,不会出现乱码;而用ajax提交的话,ajax在前台把要发送的数据编码从“gb2312”转换 成“utf-8”后再传给后台,然后再把接收到的后台返回的数据当成是 “utf-8”而把它转换 成“gb2312”后显示在前台页面上,这样乱码就产生了。
如图:
所以要解决乱码,要在后台进行数据编码转换,后台接收到的数据用php的mb_convert_encoding(要转换的数据,gb2312,utf-8)进行转换后存储到数据库。而后台返回到前台的中文数据也要用mb_convert_encoding(要返回的数据,utf-8,gb2312)转换后返回。
http://www.bkjia.com/phpjc/327519.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/327519.htmltecharticle中文如果用表单提交的话,不会出现乱码,而用ajax提交就会出现乱码,这是什么原因呢? 我的理解是,我在写源码的时候,一般用记事本写...
