国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
c# .net url帶中文參數(shù)顯示亂碼的問題

最近要上個項目,其實很簡單的東西,就是拼接一個url,不過url中的參數(shù)需要UrlEncode編碼的,其實對我來說,這個問題很好解決,C#用HttpUtility.UrlEncode來進行編碼,asp用Server.UrlEncode來進行編碼。

問題解決了嗎?問題剛剛開始

因為這個公用轉(zhuǎn)向文件,是針對所有分站的,分站代碼有.net和asp兩種,文件編碼格式也不一樣。

頭大的事情開始了。asp站的文件編碼是gb2312,雖然.net的文件格式也是gb2312,但因為webconfig里設置的 requestEncoding是utf8的,所以在接收中文的時候,無論你UrlDeCode怎么解碼,哪怕你指定用gb2312解碼,出來的還是亂碼,那這時候你會說改下webconfig文件呀,不錯!如果是你自己的小項目,這樣的改動或許不算什么,可如果牽涉到很多項目,在你沒辦法改的情況下怎么辦呢????

先看看例子吧:
環(huán)境:
asp:文件名:test.asp 文件編碼:gb2312
.net:文件名:test.aspx,test.aspx.cs 文件編碼:gb2312
.net:文件名:go.aspx, go.aspx.cs文件編碼:gb2312
test.asp 代碼:
<%
str = Server.UrlEncode("中文測試")
Response.Redirect "go.aspx?name=" & str
%>

test.aspx.cs代碼:
string str = HttpUtility.UrlEncode("中文測試");
Response.Redirect("go.aspx?name=" + str);
go.aspx.cs代碼:
string name = HttpUtility.UrlDeCode(Request["name"], Encoding.GetEncoding("gb2312"));

Response.Redirect("http://www.xxx.com?name=
" + HttpUtility.UrlEncode(name));
其實在go.aspx.cs中,大家以為編碼定到gb2312,應該會正常了,其實錯了,我跟蹤了一下,在Request["name"]的時候,已經(jīng)解碼,解碼的是按照webconfig設置的,那就是utf8。

ok,.Net中,可以指定編碼進行url編碼,test.aspx.cs可以變成:HttpUtility.UrlEncode("中文測試", Encoding.GetEncoding("utf-8")) 這樣go.aspx接收后會完全轉(zhuǎn)換的。

可asp的Server.UrlEncode是沒有這個參數(shù)的,怎么辦呢?
2個辦法:
1、把test.asp保存為utf-8編碼
2、就是我自己想的一個不是辦法的辦法。
因為前面說了,我牽涉的項目都是無法更改編碼的,如果更改對網(wǎng)站的牽涉太大,所以只能另外想辦法。

在做了大量測試后,我發(fā)現(xiàn)UrlEncode轉(zhuǎn)碼后成為%AB%CD格式,大家都知道UrlEncode在轉(zhuǎn)碼英文的時候,會原封不動的還給你,比如你傳A,接收方接收的也是A,%會轉(zhuǎn)換成%25,UrlDecode解碼的時候%25無論你什么編碼,都會解碼成%

好,有思路了,假設“中文測試”編碼為%AB%CD%EF%GH
str = Server.UrlEncode("中文測試") '%AB%CD%EF%GH
str1 = Server.UrlEncode(Server.UrlEncode("中文測試")) '%25AB%25CD%25EF%25GH

我們再改下go.aspx.cs
Response.Write(HttpUtility.UrlDeCode(Request["str"],Encoding.GetEncoding("gb2312"));

Response.Write(HttpUtility.UrlDeCode(Request["str1"],Encoding.GetEncoding("gb2312"));

看下go.aspx頁面顯示:
第一條會顯示亂碼
第二條會顯示:中文測試

這是什么原因呢?因為在Request的時候,因為webconfig的關系,事先已經(jīng)按照utf8來進行解碼了,所以你再用指定格式解碼已經(jīng)無濟于事了。
第二個為什么可以呢?因為我2次編碼了,所以Request的時候,會事先解碼成:%AB%CD%EF%GH
所以我在用UrlDecode來進行解碼,OK!任務完成

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
asp及asp.net的urlencode問題
在C#中使用server.UrlEncode() 方法
各種語言中的urlencode方法
你不知道的 頁面編碼,瀏覽器選擇編碼,get,post各種亂碼由來
編碼解碼:UrlDecode解碼及UrlEncode編碼的jQuery方法
解決ASP.NET中的各種亂碼問題
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服