中文如果用表单提交的话,不会出现乱码,而用ajax提交就会出现乱码,这是什么原因呢?
我的理解是,我在写源码的时候,一般用记事本写,保存的时候默认用ANSI编码,源码中也没有用“
<meta http-equiv=Content-Type content=text/html;charset=UTF-8>”或“
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")转换后返回。
相关推荐:
Javascript remove 自定义数组删除方法
IIS6中配置PHP的方法 200911
实现按关健字模糊查询,并按匹配度排序的SQL语句
asp.net 下载文件时根据MIME类型自动判断保存文件的扩展名
中文域名备受关注 互联网40年最大变革
JavaScript 复制功能代码 兼容多浏览器
Oracle 子程序参数模式,IN,OUT,NOCOPY
Oracle 分析函数RANK(),ROW_NUMBER(),LAG()等的使用方法
IIS SHTML支持设置方法(SSI)
Mootools 1.2教程 同时进行多个形变动画
asp.net下获取浏览器类型的实现代码
利用JavaScript更改input中radio和checkbox样式
CMD下的网络安全配置命令
javascript实现的距离现在多长时间后的一个格式化的日期
SQL Server全文检索查询浅析
MSSQL 删除数据库里某个用户所有表里的数据
ASP 正则函数替换分页后的参数
FckEditor 中文配置手册
asp.net 简单实现禁用或启用页面中的某一类型的控件
asp.net IList查询数据后格式化数据再绑定控件
JavaScript 工具库 Cloudgamer JavaScript Library v0.1 发布
Asp.net 菜单控件简洁版
php面向对象全攻略 (十) final static const关键字的使用
JS 倒计时实现代码(时、分,秒)
Jquery AJAX 框架的使用方法
javascript 面向对象,实现namespace,class,继承,重载
解决Nginx + PHP(FastCGI)遇到的502 Bad Gateway错误
sqlServer 获取汉字字串的拼音声母
javascript 必知必会之closure
彻底解决页面文字编码乱码问题
JSP输出HTML时产生的大量空格和换行的去除方法
JavaScript 炫彩的文字
jQuery 使用手册(一)
ASP 使用三层架构 asp中使用类
深入认识javascript中的eval函数
JSP 报表打印的一种简单解决方案
jquery 操作单选框,复选框,下拉列表实现代码
javascript 在网页中的运用(asp.net)
apache SHTML网页SSI使用详解
Flex 获得png透明截图的问题和解决方法
国外开发者谈为何放弃PHP而改用Python
PHP 正则的使用基础入门
sqlserver 中charindex/patindex/like 的比较
sqlserver 日志恢复方法(搞定drop和truncate)
JSP errorPage设置方法
SQLSERVER中union,cube,rollup,cumpute运算符使用说明
PHP 单引号与双引号的区别
php UTF8 文件的签名问题
asp.net ckeditor编辑器的使用方法
Javascript createElement和innerHTML增加页面元素的性能对比