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

==奇怪了,url中文参数乱码的问题==

--------------------编程问答-------------------- 编码问题!参数事先编码下!!! --------------------编程问答--------------------
引用 1 楼 hou306010849 的回复:
编码问题!参数事先编码下!!!
对方就是传这样的参数过来,郁闷的是别的系统是能正常接收 --------------------编程问答-------------------- 设置Temp.aspx页面的Encoding
<%@ Page RequestEncoding="GB2312" ResponseEncoding="GB2312" %>
  
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/ --------------------编程问答-------------------- 新人,,不太懂 --------------------编程问答--------------------
引用 3 楼 feiyun0112 的回复:
设置Temp.aspx页面的Encoding
<%@ Page RequestEncoding="GB2312" ResponseEncoding="GB2312" %>
  
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/

确认你试成功,我测试还是乱码 --------------------编程问答-------------------- 或者把web.config的编码修改为
<globalization requestEncoding="GB2312" responseEncoding="GB2312" fileEncoding="GB2312"/>也是显示正常的

我没试,你说这个正常的话,同理设页面也是一样的
--------------------编程问答-------------------- http://127.0.0.1:9002/Temp.aspx?sss=abc测试
有没有试过把abc测试设置一个变量来接受,然后传变量呢?string str="abc测试";
http://127.0.0.1:9002/Temp.aspx?sss=str; --------------------编程问答-------------------- 你把要传递的参数用JS的escape()函数做一下编码之后再传递看看,在万般无奈的况下可以一试! --------------------编程问答-------------------- sss=abc测试 这个参数不编码就传肯定会有问题的,还是先把参数编码下再传吧 --------------------编程问答-------------------- 在传值传过去的时候encoding --------------------编程问答--------------------
引用 7 楼 hhb_19930307 的回复:
http://127.0.0.1:9002/Temp.aspx?sss=abc测试
有没有试过把abc测试设置一个变量来接受,然后传变量呢?string str="abc测试";
http://127.0.0.1:9002/Temp.aspx?sss=str;



额。。。第一次见这样的。

URL能这样传变量过去?求解 --------------------编程问答-------------------- 传参时escape一下 --------------------编程问答-------------------- 看样子传给你的值编码方式是gb2312,你读取用的是utf_8,现在你需要将编码转一下就可以了。

 string strold = "你拿到的字符串";
                Encoding Default = Encoding.Default;
                Encoding UTF8 = Encoding.UTF8;
                //以UTF_8编码转回字节
                byte[] utfBytes = UTF8.GetBytes(strold);
                //改编码方式gb2312为utf_8
                byte[] unicodeBytes = Encoding.Convert(Default, UTF8, utfBytes);
                //将转好的字节用默认编码读出来
                char[] unicodeChars = new char[UTF8.GetCharCount(unicodeBytes, 0, unicodeBytes.Length)];
                UTF8.GetChars(unicodeBytes, 0, unicodeBytes.Length, unicodeChars, 0);
                string unicodeString = new string(unicodeChars);
--------------------编程问答--------------------
引用 9 楼 human84 的回复:
sss=abc测试 这个参数不编码就传肯定会有问题的,还是先把参数编码下再传吧



+`1 --------------------编程问答--------------------
引用 11 楼 systemx 的回复:
Quote: 引用 7 楼 hhb_19930307 的回复:

http://127.0.0.1:9002/Temp.aspx?sss=abc测试
有没有试过把abc测试设置一个变量来接受,然后传变量呢?string str="abc测试";
http://127.0.0.1:9002/Temp.aspx?sss=str;



额。。。第一次见这样的。

URL能这样传变量过去?求解


说实话,在回答你这个问题前,我也不记得我是否用过,但是刚才我去试了一下,可以的。而且也没有出现乱码,不知道是不是你那边的问题。。 --------------------编程问答-------------------- 两者编码不一致啊 --------------------编程问答--------------------
引用 15 楼 hhb_19930307 的回复:
Quote: 引用 11 楼 systemx 的回复:

Quote: 引用 7 楼 hhb_19930307 的回复:

http://127.0.0.1:9002/Temp.aspx?sss=abc测试
有没有试过把abc测试设置一个变量来接受,然后传变量呢?string str="abc测试";
http://127.0.0.1:9002/Temp.aspx?sss=str;



额。。。第一次见这样的。

URL能这样传变量过去?求解


说实话,在回答你这个问题前,我也不记得我是否用过,但是刚才我去试了一下,可以的。而且也没有出现乱码,不知道是不是你那边的问题。。



额。。。不同页面间只传递一个变量名过去能获取到变量值?

能不能把你的代码发来学习下。
--------------------编程问答--------------------
引用 2 楼 ChinaOneCup 的回复:
对方就是传这样的参数过来,郁闷的是别的系统是能正常接收

修改“对方”的代码,使得你看到的url中绝对不会有中文。

例如在asp.net我们要重定向到新的页面,应该写
Page.Response.Redirect("~/Temp.aspx?sss="+ Server.UrlEncode(x);
而不能写
Page.Response.Redirect("~/Temp.aspx?sss="+ x;
--------------------编程问答-------------------- Page.Response.Redirect("~/Temp.aspx?sss="+ Server.UrlEncode(x));

而不能写


Page.Response.Redirect("~/Temp.aspx?sss="+ x);
--------------------编程问答-------------------- 一般现在的游览器都是有自动的编码的功能的,楼主你用的是什么游览器,版本是几 --------------------编程问答-------------------- --------------------编程问答--------------------
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GBK");
--------------------编程问答--------------------
引用 17 楼 systemx 的回复:
Quote: 引用 15 楼 hhb_19930307 的回复:

Quote: 引用 11 楼 systemx 的回复:

Quote: 引用 7 楼 hhb_19930307 的回复:

http://127.0.0.1:9002/Temp.aspx?sss=abc测试
有没有试过把abc测试设置一个变量来接受,然后传变量呢?string str="abc测试";
http://127.0.0.1:9002/Temp.aspx?sss=str;



额。。。第一次见这样的。

URL能这样传变量过去?求解


说实话,在回答你这个问题前,我也不记得我是否用过,但是刚才我去试了一下,可以的。而且也没有出现乱码,不知道是不是你那边的问题。。



额。。。不同页面间只传递一个变量名过去能获取到变量值?

能不能把你的代码发来学习下。


好久没有登录,都忘了。这是我上次实验的

跳转页面
string str="abc你好";
Response.Redirect("webText.aspx?ID="+str);

接受页面
 txtShow.Text = Request.QueryString["ID"]; --------------------编程问答-------------------- Response.Charset="GB2312" 
你试试可以吗 --------------------编程问答--------------------
引用 18 楼 sp1234 的回复:
Quote: 引用 2 楼 ChinaOneCup 的回复:
对方就是传这样的参数过来,郁闷的是别的系统是能正常接收

修改“对方”的代码,使得你看到的url中绝对不会有中文。

例如在asp.net我们要重定向到新的页面,应该写
Page.Response.Redirect("~/Temp.aspx?sss="+ Server.UrlEncode(x);
而不能写
Page.Response.Redirect("~/Temp.aspx?sss="+ x;

+1 --------------------编程问答-------------------- 客户端的url参数可以用js的encodeURIComponent()进行编码处理。。
后端可以用.net的url解码进行处理。。
压根就不需要进行统一配置文件编码,因为这个还设计到你网页在客户端浏览器打开的编码问题。。 --------------------编程问答-------------------- 楼主,以前我也遇到过类似的问题 
get提交中文会出现乱码,post一般不会出现 


你可以看看这个帖子。 http://bbs.csdn.net/topics/390305296 --------------------编程问答-------------------- 两个页面的编码不一致。或是你直接在地址栏打进去,浏览器不知网站使用什么编码就采用了默认的方式 --------------------编程问答-------------------- 传参时候编码下,  接受参数的时候解码下,如19,18L  p哥所说 --------------------编程问答-------------------- 编码   解码
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,