[转]结合PHP实例谈谈如何解决jQuery.ajax提交GB2312或GBK编码中文乱码问题
2010-05-12 10:51
1091 查看
转自:http://www.biuuu.com/
如果你的网页编码是GB2312或GBK编码,那么在使用jQuery.ajax提交中文字符时就会存在中文乱码问题,因为jQuery.ajax把需要提交的中文字符自动转换为UTF8编码,这与网页本身的GB2312或GBK编码不一致,这就会显示乱码,本文结合PHP实例,谈谈如何解决中文乱码以及一些相关的注意事项。
实例代码如下:
(1)HTML部分(test.html)
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<script type="text/javascript" src="jquery-1.3.1.min.js"></script>
<script type="text/javascript">
<!--
jQuery(document).ready(function(){
jQuery(":button").click(function(){
jQuery.ajax({
url:'biuuu.php',
type:'post',
data: 'do=test&name=必优博客',
success:function(txt){
jQuery("#result").html(txt);
}
});
});
});
//-->
</script>
</head>
<body>
<button>测试</button>
<div id="result"></div>
</body>
</html>
(2)PHP部分(biuuu.php)
<?php
$do = isset ( $_POST ['do'] ) ? $_POST ['do'] : null;
$name = isset ( $_POST ['name'] ) ? $_POST ['name'] : null;
if ($do == 'test') {
echo $name;
}
?>
点击测试按钮执行一个ajax提交请求,并将成功返回的数据显示在ID为result的DIV中。
实例使用GB2312编码,分别使用三个文件,分别是test.html、biuuu.php和jquery-1.3.1.min.js文件,其中biuuu.php是处理ajax提交的文件
一,提交中文字符并直接返回无乱码(代码如上)
在使用jQuery.ajax提交的data中,使用ajax提交了两个参数,分别是do和name,参数name的值是中文字符“必优博客”,这里我直接提交,然后在biuuu.php中直接echo出$name值,返回给ajax,结果并没有乱码,效果图如下:
从效果图可知,处理文件响应输出的是utf8字符乱码(这说明jQuery.ajax已经将提交的字符转换为utf8编码字符),但实际打印结果是正确的字符。
二,返回中文字符有乱码
修改biuuu.php文件,增加输出,如下:
<?php
$do = isset ( $_POST ['do'] ) ? $_POST ['do'] : null;
$name = isset ( $_POST ['name'] ) ? $_POST ['name'] : null;
if ($do == 'test') {
echo $name;
echo '技术源于实践,实践必然优秀!';
}
?>
操作方法同上,但这时候出现了乱码,效果图如下:
这是由于直接输入的字符是GB2312编码字符,但经过jQuery.ajax后自动转换为utf8编码,因此产生乱码,但从效果图可知,处理文件响应输出的是中文字符,这里你看到的是正确的字符,但实际打印结果是乱码。
如何解决乱码问题?
PHP解决UTF8乱码问题非常简单,使用iconv函数进行内码转换[http://cn.php.net/iconv],书写如下函数
function gbkToUtf8 ($value) {
return iconv("gbk", "UTF-8", $value);
}
把gbk编码转换为utf8编码,修改后的biuuu.php文件如下:
<?php
$do = isset ( $_POST ['do'] ) ? $_POST ['do'] : null;
$name = isset ( $_POST ['name'] ) ? $_POST ['name'] : null;
if ($do == 'test') {
echo $name;
echo gbkToUtf8('技术源于实践,实践必然优秀!');
}
function gbkToUtf8 ($value) {
return iconv("gbk", "UTF-8", $value);
}
?>
通过gbkToUtf8()函数把GBK转换成UTF8,效果图如下:
从效果图可知,处理文件响应输出的是utf8字符乱码,但实际打印结果是正确的字符。因此乱码问题解决。
三,如何把jQuery.ajax保存到数据库中再显示
如果使用jQuery.ajax提交的数据需要保存到数据库中,直接存储将会是UTF8的乱码,因此,在存储前需要把utf8转化为gbk,增加如下函数
function utf8ToGBK ($value) {
return iconv("UTF-8", "gbk", $value);
}
使用utf8ToGBK()函数就可以把jQuery.ajax提交的数据转换成我们需要存储的编码,这个过程非常重要。
如果将数据存储到数据库然后再显示到页面,那么需要经过三个步骤
1,使用utf8ToGBK()函数转换
2,存储到数据库
3,从数据库取出数据,再使用gbkToUtf8()函数转换显示到页面
解决jQuery.ajax中文乱码问题关键在于了解字符编码的状态,你要准确的知道当前字符是什么编码,这样才能对症下药,在PHP中使用iconv函数可以轻松实现内码转换,可以快速进行编码的转换。同时结合Fixfox的firebug工具,查看当前请求响应情况。掌握乱码产生的原因,并会学如何解决乱码问题。
如果你的网页编码是GB2312或GBK编码,那么在使用jQuery.ajax提交中文字符时就会存在中文乱码问题,因为jQuery.ajax把需要提交的中文字符自动转换为UTF8编码,这与网页本身的GB2312或GBK编码不一致,这就会显示乱码,本文结合PHP实例,谈谈如何解决中文乱码以及一些相关的注意事项。
实例代码如下:
(1)HTML部分(test.html)
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<script type="text/javascript" src="jquery-1.3.1.min.js"></script>
<script type="text/javascript">
<!--
jQuery(document).ready(function(){
jQuery(":button").click(function(){
jQuery.ajax({
url:'biuuu.php',
type:'post',
data: 'do=test&name=必优博客',
success:function(txt){
jQuery("#result").html(txt);
}
});
});
});
//-->
</script>
</head>
<body>
<button>测试</button>
<div id="result"></div>
</body>
</html>
(2)PHP部分(biuuu.php)
<?php
$do = isset ( $_POST ['do'] ) ? $_POST ['do'] : null;
$name = isset ( $_POST ['name'] ) ? $_POST ['name'] : null;
if ($do == 'test') {
echo $name;
}
?>
点击测试按钮执行一个ajax提交请求,并将成功返回的数据显示在ID为result的DIV中。
实例使用GB2312编码,分别使用三个文件,分别是test.html、biuuu.php和jquery-1.3.1.min.js文件,其中biuuu.php是处理ajax提交的文件
一,提交中文字符并直接返回无乱码(代码如上)
在使用jQuery.ajax提交的data中,使用ajax提交了两个参数,分别是do和name,参数name的值是中文字符“必优博客”,这里我直接提交,然后在biuuu.php中直接echo出$name值,返回给ajax,结果并没有乱码,效果图如下:
从效果图可知,处理文件响应输出的是utf8字符乱码(这说明jQuery.ajax已经将提交的字符转换为utf8编码字符),但实际打印结果是正确的字符。
二,返回中文字符有乱码
修改biuuu.php文件,增加输出,如下:
<?php
$do = isset ( $_POST ['do'] ) ? $_POST ['do'] : null;
$name = isset ( $_POST ['name'] ) ? $_POST ['name'] : null;
if ($do == 'test') {
echo $name;
echo '技术源于实践,实践必然优秀!';
}
?>
操作方法同上,但这时候出现了乱码,效果图如下:
这是由于直接输入的字符是GB2312编码字符,但经过jQuery.ajax后自动转换为utf8编码,因此产生乱码,但从效果图可知,处理文件响应输出的是中文字符,这里你看到的是正确的字符,但实际打印结果是乱码。
如何解决乱码问题?
PHP解决UTF8乱码问题非常简单,使用iconv函数进行内码转换[http://cn.php.net/iconv],书写如下函数
function gbkToUtf8 ($value) {
return iconv("gbk", "UTF-8", $value);
}
把gbk编码转换为utf8编码,修改后的biuuu.php文件如下:
<?php
$do = isset ( $_POST ['do'] ) ? $_POST ['do'] : null;
$name = isset ( $_POST ['name'] ) ? $_POST ['name'] : null;
if ($do == 'test') {
echo $name;
echo gbkToUtf8('技术源于实践,实践必然优秀!');
}
function gbkToUtf8 ($value) {
return iconv("gbk", "UTF-8", $value);
}
?>
通过gbkToUtf8()函数把GBK转换成UTF8,效果图如下:
从效果图可知,处理文件响应输出的是utf8字符乱码,但实际打印结果是正确的字符。因此乱码问题解决。
三,如何把jQuery.ajax保存到数据库中再显示
如果使用jQuery.ajax提交的数据需要保存到数据库中,直接存储将会是UTF8的乱码,因此,在存储前需要把utf8转化为gbk,增加如下函数
function utf8ToGBK ($value) {
return iconv("UTF-8", "gbk", $value);
}
使用utf8ToGBK()函数就可以把jQuery.ajax提交的数据转换成我们需要存储的编码,这个过程非常重要。
如果将数据存储到数据库然后再显示到页面,那么需要经过三个步骤
1,使用utf8ToGBK()函数转换
2,存储到数据库
3,从数据库取出数据,再使用gbkToUtf8()函数转换显示到页面
解决jQuery.ajax中文乱码问题关键在于了解字符编码的状态,你要准确的知道当前字符是什么编码,这样才能对症下药,在PHP中使用iconv函数可以轻松实现内码转换,可以快速进行编码的转换。同时结合Fixfox的firebug工具,查看当前请求响应情况。掌握乱码产生的原因,并会学如何解决乱码问题。
相关文章推荐
- jQuery.ajax提交GB2312或GBK编码中文乱码问题
- jquery中ajax方法提交数据时,中文乱码问题解决。
- php ajax 中文乱码问题解决办法(接收发送)utf-8 GBK GB2312
- 已解决了ajax(源文件编码gb2312)发送+php接收(源文件编码gb2312)中文乱码问题(utf-8也通用)
- JSP解决ajax使用$.get()方式提交中文出现乱码问题
- php+AJAX传送中文会导致乱码的问题的解决方法
- JQuery中Ajax提交在IE下中文乱码的解决方法
- Minishowcase-AJAX/PHP开源相册解决中文翻译和中文乱码问题
- JQuery中Ajax的Post提交在IE下中文乱码的解决方法
- php中json_encode处理gbk与gb2312中文乱码问题的解决方法
- PHP Ajax中文乱码问题解决方法
- 页面编码为GBK时_jquery_提交ajax数据完美解决中文乱码方案
- 关于ajax的get提交中文乱码问题探究及解决办法
- 解决php中json中文乱码以及JQuery读取中文乱码的问题
- 解决PHP中用JQuery加载PHP和HTML文件中文乱码问题
- php+AJAX传送中文会导致乱码的问题的解决方法
- jquery.ajax的url中传递中文乱码问题的解决方法
- 关于php中ajax运用时的中文乱码问题的解决
- 织梦gbk版本中ajax提交自定义表单中文乱码问题解决方法
- JSP中,AJAX使用POST方式提交中文乱码问题解决