控件中国网现已改版,您看到的是老版本网站的镜像,系统正在为您跳转到新网站首页,请稍候.......
中国最专业的商业控件资讯网产品咨询电话:023-67870900 023-67871946
产品咨询EMAIL:SALES@COMPONENTCN.COM

Asp.net传中文的解决方法

作者:不详 出处:IT专家网 2010年02月03日 阅读:

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); });

热推产品

  • ActiveReport... 强大的.NET报表设计、浏览、打印、转换控件,可以同时用于WindowsForms谀坔攀戀Forms平台下......
  • AnyChart AnyChart使你可以创建出绚丽的交互式的Flash和HTML5的图表和仪表控件。可以用于仪表盘的创......
首页 | 新闻中心 | 产品中心 | 技术文档 | 友情连接 | 关于磐岩 | 技术支持中心 | 联系我们 | 帮助中心 Copyright-2006 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 电话:023 - 67870900 传真:023 - 67870270 产品咨询:sales@componentcn.com 渝ICP备12000264号 法律顾问:元炳律师事务所 重庆市江北区塔坪36号维丰创意绿苑A座28-5 邮编:400020
在线客服
在线客服系统
在线客服
在线客服系统