url传递汉字参数问题,难住了!大家帮忙。
比如我们在百度搜索关键字,会转入下列页面:
http://www.baidu.com/s?lm=0&si=&rn=10&ie=gb2312&ct=0&wd=%BA%AB%B9%FA%D3%EF%D1%A7%CF%B0%D7%CA%C1%CF&pn=10&cl=3&f=1
请问 %BA%AB%B9%FA%D3%EF%D1%A7%CF%B0%D7%CA%C1%CF 这段字符用c#怎么实现,然后怎么接收这个参数。
注意是两个问题:1如何转成串;2如何转回去。
谢谢大家,参与者都有份。
------解决方案--------------------帮顶
------解决方案--------------------Server.UrlEncode 和 Server.UrlDecode
------解决方案--------------------Server.UrlEncode
Server.UrlDecode
------解决方案--------------------HttpUtility.UrlEncode
------解决方案--------------------js:
var fileName = "../inc/selectMultipleVendor.aspx?supplierCode= "+escape(supplierList);
var sReturn = window.showModalDialog(fileName,window, "dialogHeight:700px;dialogWidth:800px;status:no;help:no;edge: Raised; ");
------解决方案--------------------Server.UrlEncode
Server.UrlDecode
可能自己还定义了个转换字符串的算法
------解决方案--------------------System.Web.HttpUtility.UrlDecode;
对要传递的参数进行解密。
System.Web.HttpUtility.UrlEncode;
对要传递的参数进行加密。
------解决方案--------------------.....
------解决方案--------------------Server.UrlEncode Server.UrlDecode
------解决方案--------------------Server.UrlEncode Server.UrlDecode
或是
HttpUtility.UrlEncode HttpUtility.UrlDecode
------解决方案--------------------用这个把汉字进行URL编码 Server.UrlEncode
用这个解码 Server.UrlDecode
你看到的那种情况主要是 汉字如果不编码用url传过去会是乱码,
所以进行编码,
------解决方案--------------------System.Web.HttpUtility.UrlDecode;
对要传递的参数进行解密。
System.Web.HttpUtility.UrlEncode;
对要传递的参数进行加密。
原理是:取汉字的2字节的unicode码,按字节(0-255)取16进制,加%。
因为unicode是国际化的,所以唯一确定,解码时执行相反的操作
------解决方案--------------------楼上各位说得都不对。百度的URL Encode处理不是Server.UrlDecode()就可以简单还原的。
------解决方案--------------------1: <form action= "post ">
Response.Redirect( "http://www.baidu.com/s?lm=0&si=&rn=10&ie=gb2312&ct=0&wd=中文汉字&pn=10&cl=3&f=1 ");
2.Request.QueryString[ "wd "] //直接接收
------解决方案--------------------参与者都有份
------解决方案--------------------下面先来看两个函数,UTF16转UTF8和UTF8转Utf16的。
function utf16to8(str) {
var out, i, len, c;
out = " ";
len = str.length;
for(i = 0; i < len; i++) {
c = str.charCodeAt(i);
if ((c > = 0x0001) && (c <= 0x007F)) {
out += str.charAt(i);
} else if (c > 0x07FF) {
out += String.fromCharCode(0xE0 | ((c > > 12) & 0x0F));
out += String.fromCharCode(0x80 | ((c > > 6) & 0x3F));
out += String.fromCharCode(0x80 | ((c > > 0) & 0x3F));
} else {
out += String.fromCharCode(0xC0 | ((c > > 6) & 0x1F));