MyApp.aspx?url=http://product.cn.china.cn/selling-leads/%C8%BC%C6%F8%D4%EE%BE%DF/
URL作爲GET請求我的ASP.NET應用程序。中文字符以url編碼。我想讀與
httpRequest.Params["url"]
URL參數值,並獲得導致這樣
http://product.cn.china.cn/selling-leads/ȼ�����/
的編碼部分丟失。哪裏有問題?
MyApp.aspx?url=http://product.cn.china.cn/selling-leads/%C8%BC%C6%F8%D4%EE%BE%DF/
URL作爲GET請求我的ASP.NET應用程序。中文字符以url編碼。我想讀與
httpRequest.Params["url"]
URL參數值,並獲得導致這樣
http://product.cn.china.cn/selling-leads/ȼ�����/
的編碼部分丟失。哪裏有問題?
好吧,我有同樣的問題用希伯來語
你必須使用HttpUtility.UrlDecode和HttpUtility.UrlEncode()
像這樣
dim str=HttpUtility.UrlEncode("the string that add to the url")
(當然送str中的url)
而在接收頁面中使用這個
dim temp as string=HttpUtility.UrlDecode(httpRequest.Params["url"] , System.Text.Encoding.Default())
你可以做到這一點在JavaScript太
escape(value)
是一個函數的文本編碼
,你可以在服務器端像這樣使用:
dim temp as string=HttpUtility.UrlDecode(httpRequest.Params["url"] , System.Text.Encoding.Default())
確定的字符已在URL中正確編碼?
如果我URL的eNode 公共汽車
,我得到%E5%85%AC%E5%85%B1%E6%B1%BD%E8%BB%8A
如果我在%E5%85%AC%E5%85%B1%E6%B1%BD%E8%BB%8A
傳遞,因爲它工作正常的查詢參數,但不與你的字符串,%C8%BC%C6%F8%D4%EE%BE%DF
。
如果我嘗試使用online URL encoder/decoder解碼字符串,它也不起作用,同樣如果我嘗試System.Text.Encoding.UTF8.GetString
。
所以我認爲問題是你提交的字符串編碼不正確。
** UPDATE **
經仔細檢查它出現在你的URL字符串中的字符是GBK編碼(鏈接到頁面也說,在使用的字符集是GBK)。
我不確定如何做到這一點,但如果你想在另一種編碼的URL參數,你將需要從GBK轉換到其他編碼。
** UPDATE **
OK,我想我知道了:)
它看起來像ASP.NET的解碼使用了錯誤的編碼的URL。您可以強制ASP.NET解碼請求作爲GBK加給你的web.config文件:
<system.web>
<globalization requestEncoding="gbk" />
</system.web>
如果由於某種原因你不想這樣做,那麼你將需要分析和解碼原始URL自己:
// TODO: Grab this from Request.RawUrl
string urlParam = "%C8%BC%C6%F8%D4%EE%BE%DF";
// Source encoding is GBK
Encoding gbk = Encoding.GetEncoding("gbk");
string decodedParam = HttpUtility.UrlDecode(urlParam, gbk);
decodedParam現在將包含你想要什麼,燃氣竈具
(「燃氣竈」,我認爲:)
這個URL是在瀏覽器時從Chrome瀏覽器中獲取的,所以它不能被非正式編碼。此外,嘗試在瀏覽器中粘貼此網址,網頁將正確打開http://product.cn.china.cn/selling-leads/%C8%BC%C6%F8%D4%EE%BE%DF/ – Tomas
網址通常使用UTF-8編碼,我猜ASP.NET應該這樣做。 – Max
GB編碼的URI與IRI不兼容,所以在現代瀏覽器中不能很好地顯示(如http://product.cn.china.cn/selling-leads/公共汽車'),並且不會給你搜索在路徑中具有關鍵字的引擎優勢。我強烈建議移動到UTF-8編碼的URI。 – bobince
什麼是您所期待的實際字符? – Cocowalla
提交的網址相同。我失去了部分%C8%BC%C6%F8%D4%EE%BE%DF – Tomas
我的意思是,你期望的*中文*字符是什麼? :) – Cocowalla