从根本上解决Request.QueryString中文乱码问题。

lanxigang 2011-06-16 02:55:19
我说的是从根本上解决Request.QueryString中文乱码问题。就是说:Url必须得是:
http://www.abc.com/index.aspx?key=中文
一些“曲线救国”或者迂回的方法,比如说:对先对“中文”编码(escape、Server.UrlEncode)再传值的都不能算从根本上解决此问题,只能算是回避了QueryString中文乱码的问题。因为这样传的参数是“%u4E2D%u6587”或者“%e4%b8%ad%e6%96%87”而不是中文。这个问题是可以解决的,因为直接传中文在我其他的网站里面是不会乱码的,就是说这个情况偶然,或者有些细节的地方我没有注意到。
经测试以下解决方案无效: (注:网站整站是utf-8的,而且也相信utf-8可以兼容中文)
1、Request.ContentEncoding = Encoding.GetEncoding("utf-8");
2、web.config添加配置节点:<globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-CN"/>

呵呵,大家不要说:“管它传的什么,只要最后得到中文部就可以了吗?”。我先的程序要求就必须是:http://www.abc.com/index.aspx?key=中文
这样传值的 呵呵
谢谢大家了
...全文
2065 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
lanxigang 2011-06-28
  • 打赏
  • 举报
回复
呵呵 应用程序编码一致的话就不会出现这个问题了 android客户端的编码也要是utf-8可以 默认是GBK的。
周煜皓 2011-06-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 taomanman 的回复:]

这样不太好吧,一般使用UTF编码,传递中文的话,就使用Server.UrlEncode(),然后在接受页面使用Server.UrlDecode(),我们是这样做的,看其他童鞋们是怎么做的,期待。
[/Quote]

咦?为什么我这边是 传递的时候要URL加密。。但是接收的时候就不用 url解密呢?
手可摘星辰 2011-06-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 huhailongeee 的回复:]
用的GET的方式传值!!!在JS里面
function ShowDilog(name)---中文的!
{
var b=encodeURI(mc);
/*跳到你要去的页面 ?name=b*/
}

--第二个页面取值--
string Str =Server.UrlDecode(Request.QueryString["name"].ToString());
这样就没有乱码了!!!……
[/Quote]
你没理解人说的意思,懂?
newdigitime 2011-06-17
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 lanxigang 的回复:]
谢谢大家,这个不是我有没有创意 而是确实有这个需求
我这边需要android客户端访问asp.net网站 需要穿汉字的参数。用javaUrlEncode后C#UrlDecode是乱码的 。
[/Quote]
这是编码格式不对的原因

如果你的C#网页是utf-8的.

试试
var url="http://www.abc.com?q="+encodeURIComponent("中华");

lanxigang 2011-06-17
  • 打赏
  • 举报
回复
谢谢大家,这个不是我有没有创意 而是确实有这个需求
我这边需要android客户端访问asp.net网站 需要穿汉字的参数。用javaUrlEncode后C#UrlDecode是乱码的 。
zds835 2011-06-16
  • 打赏
  • 举报
回复
楼主用什么数据库?是不是字库集的关系,或者楼主看看ODBC数据库连接的属性 编码选择是什么?
LANG=english_us.8859
---》设成=zh_CN.gb看看
zds835 2011-06-16
  • 打赏
  • 举报
回复
先编码(Server.UrlEncode.())后解码。最好不要改web.config文件吧。呵呵
newdigitime 2011-06-16
  • 打赏
  • 举报
回复
楼主说到底就是不愿本中文编码成 英文/数字字符

其实这种办法是最适用,最简单,最理由的办法.

即便你用尽办法不对中文进行编码(而且成功实现了).但很多浏览器会轻松让你破功.

你用 firefox,输入
http://bbs.csdn.net/?中文

试试.
老鼠找猫 2011-06-16
  • 打赏
  • 举报
回复
直接传值
RUNBEAR 2011-06-16
  • 打赏
  • 举报
回复
先编码再传
claymore1114 2011-06-16
  • 打赏
  • 举报
回复
先编 后解码 ,楼主何必呢
LONG332949572 2011-06-16
  • 打赏
  • 举报
回复
可以试下用request.param[]看看
子夜__ 2011-06-16
  • 打赏
  • 举报
回复
http://www.abc.com/index.aspx?key=中文

自己写个算法 把中文转换英文或者字母+数字

传递过去在解密。
暖枫无敌 2011-06-16
  • 打赏
  • 举报
回复
这样不太好吧,一般使用UTF编码,传递中文的话,就使用Server.UrlEncode(),然后在接受页面使用Server.UrlDecode(),我们是这样做的,看其他童鞋们是怎么做的,期待。
work_fei 2011-06-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 longlong881129 的回复:]
楼主 你想象力很丰富 待你解决
[/Quote]
++
酷儿 2011-06-16
  • 打赏
  • 举报
回复
楼主 你想象力很丰富 待你解决
huhailongeee 2011-06-16
  • 打赏
  • 举报
回复
用的GET的方式传值!!!在JS里面
function ShowDilog(name)---中文的!
{
var b=encodeURI(mc);
/*跳到你要去的页面 ?name=b*/
}

--第二个页面取值--
string Str =Server.UrlDecode(Request.QueryString["name"].ToString());
这样就没有乱码了!!!!
小猫阿尤 2011-06-16
  • 打赏
  • 举报
回复
<globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-CN"/>
LQ_651119244 2011-06-16
  • 打赏
  • 举报
回复
我也遇到过这个问题,待解决

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧