程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 在使用Intelligencia.UrlRewriter過程中 中文亂碼問題,urlrewriter亂碼

在使用Intelligencia.UrlRewriter過程中 中文亂碼問題,urlrewriter亂碼

編輯:C#入門知識

在使用Intelligencia.UrlRewriter過程中 中文亂碼問題,urlrewriter亂碼


由於業務需求,最近將項目部分模塊修改為偽靜態,使用到了Intelligencia.UrlRewriter.dll組件。

網上對使用Intelligencia.UrlRewriter.dll的配置講解很多,在此就不多說了,(如:http://www.cnblogs.com/naoguazi/p/URLReWriter.html)

本文主要分享Url傳遞中文時亂碼問題的處理解決方案。

1、起初使用“賤招”解決。

  思路就是在通過url傳遞中文參數的時候,先將中文進行URL編碼。Jquery可以使用(編碼:encodeURIComponent(val);解碼:decodeURIComponent(val))進行編碼和解碼。我使用的IISWeb服務器,URL編碼後的參數字符是(%E8%9A%82%E8%9A%81%E7%94%B7%E5%AD%A9)傳遞時就報錯。然後我就把百分號%,使用短下劃線全部替換("%E8%9A%82%E8%9A%81%E7%94%B7%E5%AD%A9".replace(/%/gm,'_'))。然後把字符串轉入到後台在將其替換過來,解碼,然後........。兵來將擋,水來土掩。賤招就是這樣子的。最終就是能將中文參數正確的傳入到後台。這種方法雖然臨時解決了問題,但是會給以後的小伙伴會留下痛不欲生。

 

2、修改源碼,重新編譯Intelligencia.UrlRewriter.dll。使組件支持傳遞中文參數。

  在GitHub找到了源碼並下載。(https://github.com/OptimityAdvisors/Intelligencia.UrlRewriter)

  打開解決方案,將代碼插入RewriterEngine.cs文件private string Reduce(RewriteContext context, StringReader reader)方法中

result = string.Join("&", result.Split('&').Select(e => string.Join("=", e.Split('=').Select(o => HttpContext.Current.Server.UrlEncode(o)))));

如圖:

 

保存編譯後的dll就將支持傳遞中文了,

 

需要注意的是,在後台接收參數先進行解碼後使用。

var str= HttpContext.Current.Server.UrlDecode(str);

 

 

支持參數中文的dll下載地址: 下載

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved