在使用Intelligencia.UrlRewriter过程中 中文乱码问题
2016-07-27 17:54
253 查看
由于业务需求,最近将项目部分模块修改为伪静态,使用到了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)方法中
如图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/07/5d98a27f826878ebcd82dc39f0e32962.png)
保存编译后的dll就将支持传递中文了,
需要注意的是,在后台接收参数先进行解码后使用。
支持参数中文的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)))));
如图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/07/5d98a27f826878ebcd82dc39f0e32962.png)
保存编译后的dll就将支持传递中文了,
需要注意的是,在后台接收参数先进行解码后使用。
var str= HttpContext.Current.Server.UrlDecode(str);
支持参数中文的dll下载地址: 下载
相关文章推荐
- Excel对话框大全
- 共享内存
- PowerShell管理IIS
- IOS 图片上传处理 图片压缩 图片处理
- 巡检脚本
- Java中vector的使用详解
- 获取指定网站的网络时间
- 蜘蛛池的原理和实现方法
- JavaScript break和continue 跳出循环
- pinctrl框架
- 字体颜色代码表
- 自定义View学习笔记(3)->invalidate
- 理解BitSet
- Android编写简单的网络爬虫
- 链表
- CSS秘密:垂直居中
- 为什么微信撤回消息需要在2分钟以内?(大数据的应用)
- U-Boot + TTL 刷机方法
- python 之验证码
- Linux平台延时之sleep、usleep、nanosleep、select比较