IE浏览器与FF浏览器关于 Ajax传递参数值为中文时的区别
2013-08-21 19:40
417 查看
Ajax传递参数为中文时出现乱码,我遇到的情况是:
1.我的数据库连接 编码为 GB2312,latin1_swedish_ci
2.php 文件编码格式为 UTF-8,浏览器显示编码为 : UTF-8
3.我的页面显示方式为两种:
一)页面加载时自动加载,每隔一秒刷新一次
二)点击一个分机组名称时,获得该分机组的相应的成员卡片信息
4.对于第一种情况的处理:
control.php页面上获得session:
读取数据库的内容:
line 53:$grouparr[] = iconv("GB2312","UTF-8",$g[0]); //数据库内容转换为 UTF-8,这样能正常显示页面上的中文
line106:$_SESSION['dispatchgroup'] = iconv("UTF-8","GB2312",$grouparr[0]);//将转换的中文修改为 GB2312,用于在 dispatchinfo.php 文件中获得查询的条件值,获得GB2312编码的值。
dispatchinfo.php: line 291
if($_SESSION['dispatchgroup']){
$groupaddressinfo = function_listaddressesbygroup($_SESSION['dispatchgroup'],1,$value,0,$_SESSION['dispatchexten'],$_SESSION['dispatchgrouppage']);
//2013-5-17$groupaddressinfo = "listaddressesbygrouptype|0|LocalExt|1|12|1,,,801,空闲,,|1,,,802,不在线,,|1,,,803,空闲,,|1,,,804,不在线,,|,,,805,不在线,,|,,,806,不在线,,|,,,807,不在线,,|,,,808,不在线,,|,,,809,不在线,,|,,,810,不在线,,|5,餐厅,,811,10.1.6.189;连接|6,,,812,user2;断开|";
}
此种情况IE和FF,均能正常显示。
5.对于第二种情况:
点击“分机组”名称,获得点击的分机组的中文名称,通过Ajax 传递到 dispatchinfo2.php 文件中进行处理,修改前,js点击事件后获得的中文名称,alert均为正常值【格式为UTF-8】,此时数据库中的内容为GB2312,这时,在经过 iconv转码就会出现错误。
因为只对于第一种情况,我在处理时采用转换编码的方式
$groupname = iconv("GB2312","UTF-8",$groupname);
此时再次编码就会出现错误了,
解决方法:
JS 的异步提交处理:
checkval()
var ajax = InitAjax();
var url = "dispatchinfo2.php?"+arges;
//2013-08-21 limx 中文编码问题
url = encodeURI(encodeURI(url));
ajax.open('GET',url,true);
dispatchinfo2.php
$groupname = urldecode($groupname);
$groupname = iconv("utf-8","GB2312",$groupname);
四行代码完美解决中文编码的问题。
因为AJAX发送数据都是采用UTF-8编码的方式发送的,所以要在服务器 端进行编码转换(我这里页面是采用GB2312编码的,如果是采用UTF-8的话应该不会有这步的问题),所以我在服务器端进行了UTF-8转 GB2312
1.我的数据库连接 编码为 GB2312,latin1_swedish_ci
2.php 文件编码格式为 UTF-8,浏览器显示编码为 : UTF-8
3.我的页面显示方式为两种:
一)页面加载时自动加载,每隔一秒刷新一次
二)点击一个分机组名称时,获得该分机组的相应的成员卡片信息
4.对于第一种情况的处理:
control.php页面上获得session:
读取数据库的内容:
line 53:$grouparr[] = iconv("GB2312","UTF-8",$g[0]); //数据库内容转换为 UTF-8,这样能正常显示页面上的中文
line106:$_SESSION['dispatchgroup'] = iconv("UTF-8","GB2312",$grouparr[0]);//将转换的中文修改为 GB2312,用于在 dispatchinfo.php 文件中获得查询的条件值,获得GB2312编码的值。
dispatchinfo.php: line 291
if($_SESSION['dispatchgroup']){
$groupaddressinfo = function_listaddressesbygroup($_SESSION['dispatchgroup'],1,$value,0,$_SESSION['dispatchexten'],$_SESSION['dispatchgrouppage']);
//2013-5-17$groupaddressinfo = "listaddressesbygrouptype|0|LocalExt|1|12|1,,,801,空闲,,|1,,,802,不在线,,|1,,,803,空闲,,|1,,,804,不在线,,|,,,805,不在线,,|,,,806,不在线,,|,,,807,不在线,,|,,,808,不在线,,|,,,809,不在线,,|,,,810,不在线,,|5,餐厅,,811,10.1.6.189;连接|6,,,812,user2;断开|";
}
此种情况IE和FF,均能正常显示。
5.对于第二种情况:
点击“分机组”名称,获得点击的分机组的中文名称,通过Ajax 传递到 dispatchinfo2.php 文件中进行处理,修改前,js点击事件后获得的中文名称,alert均为正常值【格式为UTF-8】,此时数据库中的内容为GB2312,这时,在经过 iconv转码就会出现错误。
因为只对于第一种情况,我在处理时采用转换编码的方式
$groupname = iconv("GB2312","UTF-8",$groupname);
此时再次编码就会出现错误了,
解决方法:
JS 的异步提交处理:
checkval()
var ajax = InitAjax();
var url = "dispatchinfo2.php?"+arges;
//2013-08-21 limx 中文编码问题
url = encodeURI(encodeURI(url));
ajax.open('GET',url,true);
dispatchinfo2.php
$groupname = urldecode($groupname);
$groupname = iconv("utf-8","GB2312",$groupname);
四行代码完美解决中文编码的问题。
因为AJAX发送数据都是采用UTF-8编码的方式发送的,所以要在服务器 端进行编码转换(我这里页面是采用GB2312编码的,如果是采用UTF-8的话应该不会有这步的问题),所以我在服务器端进行了UTF-8转 GB2312
相关文章推荐
- IE浏览器与FF浏览器关于Ajax传递参数值为中文时的区别实例分析
- JQuery.ajax传递中文参数的解决方法 推荐
- 解决浏览器向服务器传递参数时中文乱码问题
- 关于前台URL传递中文参数到java后台乱码的问题
- ajax参数传递时中文乱码问题
- 关于post和get传递参数的区别
- 关于spring mvc的get方法传递中文参数时乱码问题(@RequestParam)
- 使用AJAX传递中文参数,在后台接受出现乱码问题
- 关于后台数据库正常存储中文通过Ajax方式传递到前台变成问号的处理
- 关于地址栏传递中文参数的乱码的终极解决方案
- javascript 浏览器之间跳转传递参数(不支持中文字符)
- 关于ajax中URL传递中文产生乱码的问题
- ajax提交-----URL中文参数传递后的乱码问题
- 这才是真正的JQuery.ajax传递中文参数的解决方法
- 关于页面包含中文参数传递到后台有乱码的解决办法
- 关于 URL 传递中文参数R额quest获取参数出现乱码的解决方案
- 关于地址栏传递中文参数的乱码的终极解决方案
- JQuery.ajax传递中文参数的解决方法
- 关于上个Flex-Jsp-DB例子中Flex和Jsp传递中文参数问题的解决方法!(Tomcat服务器)
- 关于js或jquery通过ajax传递中文时无法插入mysql数据库的问题