当前位置:编程学习 > C#/ASP.NET >>

url 传参的时候URL重写后乱码,不重写的没事

IIS7
传参的时候
 Response.Redirect("xianlusearch.aspx?key=" + HttpUtility.UrlEncode(txtlink.Value.Trim(), System.Text.Encoding.GetEncoding("GB2312")));

直接?key形式的传到那个页是

urlkey =Server.UrlDecode( Request.QueryString["key"].ToString());               

这么就能解析出汉字
如果是按重写得url的话

Response.Redirect("/xianlusearch__________" + HttpUtility.UrlEncode(txtlink.Value.Trim(), System.Text.Encoding.GetEncoding("GB2312")) + "_1.html");

传过去的解析就是乱码了

我再web.config里加了默认字符了
 <globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" fileEncoding="gb2312" />

每个网页标头也加了格式
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />



难道iis还要再设置默认字符?谁遇到过么。。解释下。。 --------------------编程问答--------------------
怎么统一个编码还是GB2312的


--------------------编程问答--------------------
引用 1 楼 porschev 的回复:
怎么统一个编码还是GB2312的

我认为都统一了。。可只要url重写的传的的汉字,到接收页面。。就是乱码 --------------------编程问答-------------------- 改成这样呢?

Response.Redirect(HttpUtility.UrlEncode("/xianlusearch__________", System.Text.Encoding.GetEncoding("GB2312")) 
+ HttpUtility.UrlEncode(txtlink.Value.Trim(), System.Text.Encoding.GetEncoding("GB2312"))
+ HttpUtility.UrlEncode("_1.html", System.Text.Encoding.GetEncoding("GB2312")));
--------------------编程问答--------------------
引用 3 楼 hzzasdf 的回复:
改成这样呢?

Response.Redirect(HttpUtility.UrlEncode("/xianlusearch__________", System.Text.Encoding.GetEncoding("GB2312")) 
+ HttpUtility.UrlEncode(txtlink.Value.Trim(), System.Text.Encoding.GetEncodi……

那接收是用Server.UrlDecode(); 还是HttpUtility.UrlDecod呢?? --------------------编程问答--------------------
引用 3 楼 hzzasdf 的回复:
改成这样呢?

Response.Redirect(HttpUtility.UrlEncode("/xianlusearch__________", System.Text.Encoding.GetEncoding("GB2312")) 
+ HttpUtility.UrlEncode(txtlink.Value.Trim(), System.Text.Encoding.GetEncodi……

这么传过去 比如传北京
路径就会是
http://localhost/%2fxianlusearch__________%b1%b1%be%a9_1.html
接收到的是鍖椾含 --------------------编程问答-------------------- 有人么。。。 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答--------------------
引用 6 楼 leileilang0 的回复:
有人么。。。
友情顶` --------------------编程问答-------------------- HttpUtility.UrlEncode(txtlink.Value.Trim(), System.Text.Encoding.GetEncoding("GB2312")).Trim();

试试

应该是有空格的问题吧!, --------------------编程问答--------------------
引用 11 楼 w506044 的回复:
HttpUtility.UrlEncode(txtlink.Value.Trim(), System.Text.Encoding.GetEncoding("GB2312")).Trim();

试试

应该是有空格的问题吧!,

试过。。还是不行啊。。。 --------------------编程问答-------------------- 求人。。求指导。。 --------------------编程问答-------------------- 用utf-8 不就解决问题了 --------------------编程问答-------------------- 你非要在url上转码干嘛,在获取url参数后在转,有事与留言器也有关系,火狐就是
--------------------编程问答-------------------- 要么编码的时候 去掉编码格式 gb2312    或者在解码的时候也加上解码格式 gb2312

统一啊.... --------------------编程问答-------------------- 重写用的是IIS级别的还是.NET级别的?
如果是.NET级别的还真是奇怪了,不过可调试 --------------------编程问答--------------------
引用 17 楼  的回复:
重写用的是IIS级别的还是.NET级别的?
如果是.NET级别的还真是奇怪了,不过可调试

用的iis7的重写模块Rewrite。在web.config里配置路径
这两个有什么区别么。。 --------------------编程问答-------------------- escape(url)传过去 --------------------编程问答-------------------- 然后传到的那个页面正常接收 --------------------编程问答-------------------- 注意:escape不识别 + 这个符号。 --------------------编程问答-------------------- 使用了DEC加密了。把汉字传前加密,接收再揭秘。。可能会影响收录但是先能用了再说。。。 --------------------编程问答--------------------
Encoding.UTF8.GetString(Encoding.Default.GetBytes(txtlink.Value.Trim()))
--------------------编程问答-------------------- --------------------编程问答-------------------- 乱码究竟是什么情况下的乱码,可否把乱码贴出来看看
因为在有些情况下IIS会在链接的最后加上IIS信息... --------------------编程问答-------------------- 刚看到楼主用的是加密解密解决的,
建议楼主使用编码解码的方式.
另外 搜索引擎是不喜欢链接中带有汉字的.
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,