在FireFox浏览器中asp.net+AJAX传输的中文字符串到服务器端后乱码的问题!!!!

在IE中没问题不乱码...
在FireFox中从JS客户端将表单内容传输到服务器端后再回显会出现乱码...跪求解决方法.

+展开
-JavaScript
function postText()
{
    var chatbox = getElement( "utext" );
    var chat = chatbox.value;
    chatbox.value = "";
        
    var url = AjaxServerPageName+"?active=addtext&user=" + getuser + "&userid=" + getuserid + "&text=" + chat;
    
    var req = getAjax();
    
    req.onreadystatechange = function(){
    
        if( req.readyState == 4 && req.status == 200 ) {
            req=null;
            updateAll();
        }
    
    }
    
    req.open( 'GET', url, true );
    req.send( null );
    url=null;
    chat=null;
    chatbox=null;
}


-----------------

表于:2008-11-17 16:37:041楼 得分:10
一个简单的方法是把所有文件用utf8编码

修改 删除 举报 引用 回复

加为好友
发送私信
在线聊天
zhaoguo2007
玻璃渣
等级:
可用分等级:长工
总技术分:180
总技术分排名:66466

发表于:2008-11-17 16:39:442楼 得分:0
引用 1 楼 zwd2005 的回复:
一个简单的方法是把所有文件用utf8编码

那我中文显示不就出问题了么?

修改 删除 举报 引用 回复

加为好友
发送私信
在线聊天
zwd2005
Maxwin
等级:
可用分等级:贫农
总技术分:770
总技术分排名:24664

发表于:2008-11-17 16:51:013楼 得分:0
统一用utf8的话,前台往后台提交数据可以保证不出现乱码
asp.net我不太了解,c#写的话,好像可以把中文编码传到前台的,这样也不会出现乱码
http://www.cnblogs.com/lxydmq/archive/2008/05/28/1209223.html

修改 删除 举报 引用 回复

加为好友
发送私信
在线聊天
zhaoguo2007
玻璃渣
等级:
可用分等级:长工
总技术分:180
总技术分排名:66466

发表于:2008-11-17 16:54:484楼 得分:0
我看看先,大家帮帮忙,问题一解决马上结帖~~~

修改 删除 举报 引用 回复

加为好友
发送私信
在线聊天
showbo
要学习了.....さようなら
等级:
可用分等级:富农
总技术分:57009
总技术分排名:140
3
3
发表于:2008-11-17 17:32:065楼 得分:40
输出前设置下编码


C# codeResponse.Charset = "gb2312";
//下面才使用Response.Write



修改 删除 举报 引用 回复

加为好友
发送私信
在线聊天
spyking945
CSDN
等级:
可用分等级:富农
总技术分:1903
总技术分排名:11496

发表于:2008-11-17 17:53:456楼 得分:0
传值的时候要进行编码,
你看看http://blog.csdn.net/spyking945/archive/2008/09/26/2984813.aspx
有相应的编码方法

修改 删除 举报 引用 回复

加为好友
发送私信
在线聊天
zhaoguo2007
玻璃渣
等级:
可用分等级:长工
总技术分:180
总技术分排名:66466

发表于:2008-11-18 09:06:487楼 得分:0
早上来了先顶下,问题还没解决呢...我继续试~~~~~

修改 删除 举报 引用 回复

加为好友
发送私信
在线聊天
showbo
要学习了.....さようなら
等级:
可用分等级:富农
总技术分:57009
总技术分排名:140
3
3
发表于:2008-11-18 09:21:528楼 得分:0
你的页面编码到底是什么??

如果是gb2312,检查你实际的文件的编码是否为ansi,并且检查web.config中是否已经配置为gb23l2了。如果不是,给你的请求的页面的page指令多加一个属性 ResponseEncoding="gb2312",即

HTML code<%@ Page Language="C#" ResponseEncoding="gb2312"%>




如果是utf-8,检查你实际文件的编码是否为utf-8


出现乱码一般就是文件编码,页面编码和输出时的内容编码不统一造成的

修改 删除 举报 引用 回复

加为好友
发送私信
在线聊天
zhaoguo2007
玻璃渣
等级:
可用分等级:长工
总技术分:180
总技术分排名:66466

发表于:2008-11-18 10:13:519楼 得分:0
引用 8 楼 showbo 的回复:
你的页面编码到底是什么??

如果是gb2312,检查你实际的文件的编码是否为ansi,并且检查web.config中是否已经配置为gb23l2了。如果不是,给你的请求的页面的page指令多加一个属性 ResponseEncoding="gb2312",即

HTML code <%@ Page Language="C#" ResponseEncoding="gb2312"%>


如果是utf-8,检查你实际文件的编码是否为utf-8


出现乱码一般就是文件编码,页面编码和输出时的内容编码不统一造成的

接受传递过来的中文字符串页面: <%@ Page Language="C#" AutoEventWireup="true" ResponseEncoding="gb2312" CodeFile="Service.aspx.cs" Inherits="webGameChat.Service.Service" %>

Web.config: <globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" fileEncoding="gb2312" />

全都是GB2312没错的,我这个情况是在IE里一切正常,在FireFox里乱骂而已。。。所以问题应该是出在IE和FireFox处理传递的中文字符串的差异造成的。。。

修改 删除 举报 引用 回复

加为好友
发送私信
在线聊天
showbo
要学习了.....さようなら
等级:
可用分等级:富农
总技术分:57009
总技术分排名:140
3
3
发表于:2008-11-18 10:21:4510楼 得分:0
确认文件的无力编码为ansi???


并且页面上也要指定编码

HTML code<head>
<meta http-equiv="content-type" content="text/html;charset=gb2312"/>
</head>



修改 删除 举报 引用 回复

加为好友
发送私信
在线聊天
zhaoguo2007
玻璃渣
等级:
可用分等级:长工
总技术分:180
总技术分排名:66466

发表于:2008-11-18 10:27:1411楼 得分:0
引用 10 楼 showbo 的回复:
确认文件的无力编码为ansi???


并且页面上也要指定编码

HTML code <head>
<meta http-equiv="content-type" content="text/html;charset=gb2312"/>
</head>

我由于是要回显内容所以去掉了全部标签的。。。我加上看下~~~IE里都正常就FF乱码~~~~~~~~

修改 删除 举报 引用 回复

加为好友
发送私信
在线聊天
zhaoguo2007
玻璃渣
等级:
可用分等级:长工
总技术分:180
总技术分排名:66466

发表于:2008-11-18 10:30:5312楼 得分:0
刚试过了,在Service.aspx显示页面里加了head>
<meta http-equiv="content-type" content="text/html;charset=gb2312"/>
</head>仍然对FF浏览器无效。。。继续乱码~~~IE就正常。。。我恨死FF了~~~~~555555555~~~

修改 删除 举报 引用 回复

加为好友
发送私信
在线聊天
showbo
要学习了.....さようなら
等级:
可用分等级:富农
总技术分:57009
总技术分排名:140
3
3
发表于:2008-11-18 11:35:4213楼 得分:0
是在不行返回xml,然后使用responseXML获取xml 的DOM对象,然后分析下

不要使用responseText,这样容易出现乱码

原本ajax第4个x就是xml的意思

string xml="<?xml version='1.0' encoding='gb2312'?>";//注意不要少这个申明
xml+="<msg>返回的中文信息</msg>";
Response.ContentType = "text/xml";//输出前设置下类型
Response.Charset = "gb2312";

JScript codevar dom=xmlHttp.responseXML;
alert(dom.getElementsByTagName("msg")[0].firstChild.nodeValue;



修改 删除 举报 引用 回复

加为好友
发送私信
在线聊天
zhaoguo2007
玻璃渣
等级:
可用分等级:长工
总技术分:180
总技术分排名:66466

发表于:2008-11-18 11:45:5514楼 得分:0
引用 13 楼 showbo 的回复:
是在不行返回xml,然后使用responseXML获取xml 的DOM对象,然后分析下

不要使用responseText,这样容易出现乱码

原本ajax第4个x就是xml的意思

string xml=" <?xml version='1.0' encoding='gb2312'?>";//注意不要少这个申明
xml+=" <msg>返回的中文信息 </msg>";
Response.ContentType = "text/xml";//输出前设置下类型
Response.Charset = "gb2312";


JScript codevar dom=xmlHttp.responseXML;…

谢了,我试下先...弄死我了...这个破FF这么多人爱用...真不明白...在linux上有就好了嘛~~~~

修改 删除 举报 引用 回复

加为好友
发送私信
在线聊天
zhaoguo2007
玻璃渣
等级:
可用分等级:长工
总技术分:180
总技术分排名:66466

发表于:2008-11-18 11:52:2115楼 得分:0
刚才试了下...将编码改成utf-8后FF里就正常了...不过IE乱码~~~将 编码改成GB2312后IT正常,FF乱码~~~!!!头大啊~~~~~~~~~

修改 删除 举报 引用 回复

加为好友
发送私信
在线聊天
showbo
要学习了.....さようなら
等级:
可用分等级:富农
总技术分:57009
总技术分排名:140
3
3
发表于:2008-11-18 12:09:1716楼 得分:0
就是你页面编码和物理文件的编码不统一造成的

你仔细看我给你的回复没有

检查文件的编码是否为ansi,如果你指定了页面编码为gb2312

检查文件的编码是否为utf-8,如果你指定了页面编码为utf-8

修改 删除 举报 引用 回复

加为好友
发送私信
在线聊天
zhaoguo2007
玻璃渣
等级:
可用分等级:长工
总技术分:180
总技术分排名:66466

发表于:2008-11-18 12:51:1417楼 得分:0
引用 16 楼 showbo 的回复:
就是你页面编码和物理文件的编码不统一造成的

你仔细看我给你的回复没有

检查文件的编码是否为ansi,如果你指定了页面编码为gb2312

检查文件的编码是否为utf-8,如果你指定了页面编码为utf-8

我看过了,全部都是gb2312的,一点没错,我看了下,IE里的中文用的是gb2312编码,但是FF里用的UTF-8...我再想个办法判断下...晕死了...FF兼容性真次....兄弟我弄好了马上结帖给分放心吧~HOHO~~~~

修改 删除 举报 引用 回复

加为好友
发送私信
在线聊天
showbo
要学习了.....さようなら
等级:
可用分等级:富农
总技术分:57009
总技术分排名:140
3
3
发表于:2008-11-18 13:52:5818楼 得分:0
。。。。。
你检查过文件的编码没有????


就是使用记事本打开,然后另存为,你看这个文件的编码是什么???


如果不同我16楼所说的,改成同16楼所说的


我用xml就没在ff下出乱码

修改 删除 举报 引用 回复

加为好友
发送私信
在线聊天
zhaoguo2007
玻璃渣
等级:
可用分等级:长工
总技术分:180
总技术分排名:66466

发表于:2008-11-18 14:21:1119楼 得分:0
我看了下...aspx的编码是ANSI的,CS文件的是UTF-8的~~~~~~~~

修改 删除 举报 引用 回复

加为好友
发送私信
在线聊天
zhaoguo2007
玻璃渣
等级:
可用分等级:长工
总技术分:180
总技术分排名:66466

发表于:2008-11-18 14:24:0320楼 得分:0
我把CS文件全改成ANSI编码后FF里还是乱码..........

修改 删除 举报 引用 回复

加为好友
发送私信
在线聊天
zhaoguo2007
玻璃渣
等级:
可用分等级:长工
总技术分:180
总技术分排名:66466

发表于:2008-11-18 16:21:1321楼 得分:0
郁闷啊...各位的方法我试遍了就是不行...IE里好好的...就是FF讨厌人~!!!烦死我了~!!!!!!!!

修改 删除 举报 引用 回复

加为好友
发送私信
在线聊天
CluoLeo
该用户很懒,没有设置昵称
等级:
可用分等级:贫农
总技术分:33
总技术分排名:155690

发表于:2008-11-18 22:20:3922楼 得分:0
有点难


修改 删除 举报 引用 回复

加为好友
发送私信
在线聊天
zhaoguo2007
玻璃渣
等级:
可用分等级:长工
总技术分:180
总技术分排名:66466

发表于:2008-11-19 13:48:1023楼 得分:0
问题解决了,发出来共享下~(*^_^*)

function postText()
{
var chatbox = getElement( "utext" );
if(chatbox.value=="")
{
setFocus("utext");
return false;
}
else
{
var chat = chatbox.value;
chatbox.value = "";

var url = AjaxServerPageName+"?active=addtext&user=" + escape(getuser) + "&userid=" + getuserid + "&text=" + escape(chat);

var req = getAjax();

req.onreadystatechange = function(){

if( req.readyState == 4 && req.status == 200 ) {
req=null;
updateAll();
}

}

req.open( 'GET', url, true );
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
req.send( null );
url=null;
chat=null;
chatbox=null;
}
}




其实我的C#代码不存在编码问题,改变IE和FF显示中文乱码差异的关键是在JS代码中必须对待传递的中文字符串变量用escape()获取,然后AJAX对象实例必须声明下req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');这样就搞定了,呵呵,谢谢各位的帮忙~马上给分~^_^

加支付宝好友偷能量挖...


评论(0)网络
阅读(148)喜欢(0)JavaScript/Ajax开发技巧