asp.net 使用Ajax传中文的中级解决方案
来源:互联网 发布:数据库入门教程 编辑:程序博客网 时间:2024/05/16 17:31
jquery的ajax 写死是使用utf-8 传递数据的,而我的webconfig配置了
<globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" uiCulture="zh-CN" responseHeaderEncoding="gb2312" fileEncoding="gb2312"/>
(这样配置的原因是:用户昵称中存在很多特殊字符,只有gb2312才能支持)
这样表示,我丢给jquery的字符,他还是采用了utf-8给我传去了后台,后台的handler拿到的完全是乱码。
为了解决这个问题,之前写过一个
不吹牛的jquery在.net中通过gb2312传中文的实现
这个主要通过get方式来传送,从而避免了jquery的编码,采用页面的request和response来编码。
实现倒是可以实现,只是有一个限制:传递的中文长度受限,好像是根据浏览器的地址栏最大长度,不可以超过256个字的。
那么有没有完美的方案呢?
我想到,通过.net类库提供的Request.Forms,或者Request.QueryString得到的,都是他按照webconfig配置自动编码、解码的字符串,完全都不受我控制。那我是否可以从更底层获取到byte数组,自己解码呢?
最后找到Request.BinaryRead方法。
首先还是通过jquery的Ajax方法将中文传过来,这个时候,得到的是utf8编码的(由jquery编码)。
在后台:
byte[] bys = context.Request.BinaryRead(context.Request.ContentLength);
string theStr = HttpUtility.UrlDecode(bys, Encoding.UTF8);
NameValueCollection pars = HttpUtility.ParseQueryString(theStr, Encoding.UTF8);
在前台:
jQuery.post(url,
{MyType:"hompy.index.addLeaveMessage", hidden:hidden,ouid:g_commentouid,content:content,type:g_commenttype}
, function (req) { addCommentShow(req, v_btn, v_prompt); });
- asp.net 使用Ajax传中文的中级解决方案
- ASP.NET 拼装Url字符串 需要传中文的解决方案
- 问号传中文的解决方案
- asp.net传中文值出现乱码的一个解决方法
- asp.net request 传中文乱码
- asp.net request 传中文乱码
- JQuery中使用Ajax传中文参数乱码解决方案(javaweb开发)
- 解决在asp.net中 使用 ajax UpdatePanel出现乱码问题的解决方案
- 解决asp.net的url传中文参数有乱码的情况
- asp.net页面之间传中文是乱码的处理方法
- asp.net 中IE6中 URL传中文乱码的解决
- asp.net页面之间传中文是乱码的处理方法
- asp.net 中IE6中 URL传中文乱码的解决
- .net 地址栏传中文乱码 的解决方法
- net 地址栏传中文乱码 的解决方法
- .net 地址栏传中文乱码 的解决方法
- asp.net使用ajax
- ASP.NET使用AJAX
- Java 开发环境(jdk)变量path设置
- 日语学习资料
- css中 去掉链接虚线框的方法
- FCKeditor的使用
- 合并同一行内不同列的相同数据
- asp.net 使用Ajax传中文的中级解决方案
- 嵌入式操作系统uClinux下的网络socket编程
- 写给偷偷老去的80后
- iPhone: Accessing the Simulator's File System
- 力荐javascript调试工具MSE7.exe
- 发表的专利
- mobile图片的透明处理
- 求职技巧:网投简历如何才能做到最抢眼
- 关于jQuery中的offset()和position()