关于使用ICallbackEventHandler接口 ,传递中文时的错误
2009-12-31 18:42
351 查看
初次使用ICallbackEventHandler接口实现Ajax就遇到中文编码的问题,郁闷了一下午,终于看到了一篇文章,赶紧分享出来
今天上线了一个项目,上线之后发现用户线上报名提交报名信息的时候居然报错,之前在测试服务器上运行正常。更奇怪的是只有IE和Chrome报错FireFox居然运行正常,于是在后台文件中加入跟踪日志文件跟踪用户提交的信息,发现IE提交的用户数据传到服务器端全部都是乱码。这种情况很可能是编码的问题,项目的web.config配置了<globalization requestEncoding="gb2312" responseEncoding="gb2312" />页面上其他很多的地方都是gb2312的编码,不想讲编码改为utf-8,在本地试验着将js提交给后台的参数用escape编码后再调用回传接口,然后在后台代码中将提交过来的参数用Server.UrlDecode("test")进行解码,本地运行正常,更新正式服务器的系统之后运行也正常。
下面贴出部分代码,以下是没有修改之前的代码:
前台提交数据的JS代码:
代码
public void RaiseCallbackEvent(string eventArgument)
{
m_strArguments = eventArgument;
if (string.IsNullOrEmpty(m_strArguments))
{
m_strReturn = string.Format("{0}|{1}", -1, "参数错误");
return;
}
string[] strArguments = m_strArguments.Split('|');
if (strArguments.Length != 4)
{
m_strReturn = string.Format("{0}|{1}", -1, "参数错误");
return;
}
m_strProv = Server.UrlDecode(strArguments[0]);//省份
m_strCity = Server.UrlDecode(strArguments[1]);//城市
m_strInternetbar = Server.UrlDecode(strArguments[2]);//网吧
m_strRegion = Server.UrlDecode(strArguments[3]);//大区
//验证数据的合法性
//提交数据到DB中
}
编译DLL之后更新系统dll并且更新页面,运行程序提交报名数据成功。问题是解决了,但是还是有两个问题让我疑惑:
1.为什么在测试服务器上运行正常?
2.为什么只有IE和Chrome运行错误提交到服务器端得中文会乱码而FireFix确实正常的?
这两个问题还有待研究,同时希望高手提点一二。
看来以后得养成一个习惯,在涉及到url传参和回传传递参数时一定要将参数编码滞后在传递。
详细出处参考:http://www.pqshow.com/program/aspnet/200909/9619.html
今天上线了一个项目,上线之后发现用户线上报名提交报名信息的时候居然报错,之前在测试服务器上运行正常。更奇怪的是只有IE和Chrome报错FireFox居然运行正常,于是在后台文件中加入跟踪日志文件跟踪用户提交的信息,发现IE提交的用户数据传到服务器端全部都是乱码。这种情况很可能是编码的问题,项目的web.config配置了<globalization requestEncoding="gb2312" responseEncoding="gb2312" />页面上其他很多的地方都是gb2312的编码,不想讲编码改为utf-8,在本地试验着将js提交给后台的参数用escape编码后再调用回传接口,然后在后台代码中将提交过来的参数用Server.UrlDecode("test")进行解码,本地运行正常,更新正式服务器的系统之后运行也正常。
下面贴出部分代码,以下是没有修改之前的代码:
前台提交数据的JS代码:
代码
public void RaiseCallbackEvent(string eventArgument)
{
m_strArguments = eventArgument;
if (string.IsNullOrEmpty(m_strArguments))
{
m_strReturn = string.Format("{0}|{1}", -1, "参数错误");
return;
}
string[] strArguments = m_strArguments.Split('|');
if (strArguments.Length != 4)
{
m_strReturn = string.Format("{0}|{1}", -1, "参数错误");
return;
}
m_strProv = Server.UrlDecode(strArguments[0]);//省份
m_strCity = Server.UrlDecode(strArguments[1]);//城市
m_strInternetbar = Server.UrlDecode(strArguments[2]);//网吧
m_strRegion = Server.UrlDecode(strArguments[3]);//大区
//验证数据的合法性
//提交数据到DB中
}
编译DLL之后更新系统dll并且更新页面,运行程序提交报名数据成功。问题是解决了,但是还是有两个问题让我疑惑:
1.为什么在测试服务器上运行正常?
2.为什么只有IE和Chrome运行错误提交到服务器端得中文会乱码而FireFix确实正常的?
这两个问题还有待研究,同时希望高手提点一二。
看来以后得养成一个习惯,在涉及到url传参和回传传递参数时一定要将参数编码滞后在传递。
详细出处参考:http://www.pqshow.com/program/aspnet/200909/9619.html
相关文章推荐
- 使用ICallbackEventHandler接口实现的轻量级下拉框联动
- 使用ICallbackEventHandler接口实现页面无刷新
- 使用ICallBackEventHandler接口,后台使用Response.End问题的解决
- 使用ICallbackEventHandler接口实现的轻量级下拉框联动
- 关于使用java从http接口取数据保存到本地文件的中文乱码处理
- ASP.NET无刷新客户端回调(通过实现ICallbackEventHandler接口)
- 在自定义控件中实现ICallbackEventHandler接口不经过回发而实现客户端回掉
- 使用SharePoint EventHandler added与updated 事件遇到的错误与解决方法
- 关于Override在JDK1.5和JDK1.6上子类实现接口中方法使用@Override注解编译错误.
- 关于使用java从http接口取数据保存到本地文件的中文乱码处理
- 关于使用wofstream ,中文字符写入错误
- 错误是:未能找到回调的目标“__Page”或未实现ICallbackEventHandler
- 使用ICallbackEventHandler 实现异步调用
- 在自定义控件中实现ICallbackEventHandler接口不经过回发而实现客户端回掉
- ASP.Net页面实现ICallbackEventHandler接口,不能工作的问题。
- [错误记录]关于指针传递获得数据使用错误问题....
- 关于在Eclipse中使用Ant中文路径乱码的错误
- 关于在Eclipse中使用Ant中文路径乱码的错误
- 关于使用showModalDialog传递参数出现中文乱码问题
- 使用 ICallbackEventHandler aspx页面中的DropDownList 的 SelectValue 出现中文导致不回调方法的问题