HttpContext rewritePath后中文乱码
文章为转载
由于种种原因,最近将服务器上部署的网站修改4.0框架。但悲剧的问题出现了,发现搜索中文的时候关键词都成乱码了。
在网上查找相关资料得到几种相关解决方案如下:
- 服务器打补丁server2008 打sp2补丁中文语言包
- url中中文先通过Server.UrlEncode编码
- 修改网站编码
根据以上提示进行一步一步解决 检查服务器系统已经是sp2的中文系统,网站搜索是通过js跳转的无法进行Server.UrlEncode编码,修改网站编码比较麻烦而且有可能导致其他问题,所以以上方法都行不通。
只能自己想办法了,自己添加一个简单测试页面 http://www.test.cn/test.aspx?kw=测试 页面输出QueryString时候发现输出的中文是正常的。再对搜索页面的地址不进行url重写的情况下访问测试,发现同样中文同样是正常的。于是初步确定是在URLRewriter中转发时候参数传递过程中出现问题。按照之前查到的使用Server.UrlEncode对参数进行编码。经过一番调试后终于是没有乱码了。
修改代码RewriterUtils.cs 的RewriteUrl方法
internal static void RewriteUrl(HttpContext context, string sendToUrl, out string sendToUrlLessQString, out string filePath){ if (context.Request.QueryString.Count > 0) { if (sendToUrl.Contains("?")) { sendToUrl = sendToUrl + "&" + context.Request.QueryString; } else { sendToUrl = sendToUrl + "?" + context.Request.QueryString; } } string queryString = string.Empty; sendToUrlLessQString = sendToUrl; int tempIndex = sendToUrl.IndexOf('?'); if (tempIndex != -1) { sendToUrlLessQString = sendToUrl.Substring(0, tempIndex); queryString = sendToUrl.Substring(tempIndex + 1); } filePath = context.Server.MapPath(sendToUrlLessQString); //iis7 获取乱码问题 var list = queryString.Split('&'); var newQueryStr = string.Empty; for (int i = 0; i < list.Length; i++) { var arr = list[i].Split('='); if (arr.Length > 1) { newQueryStr = newQueryStr + arr[0] + "=" + context.Server.UrlEncode(arr[1]) + "&"; } else { newQueryStr = newQueryStr + "&"; } } context.RewritePath(sendToUrlLessQString, string.Empty, newQueryStr.TrimEnd('&'));} |
问题是解决了,不过这肯定是很笨的一种方法。先临时把问题解决,再寻找更好的办法了。希望遇到类似问题的提供意见,同时也希望遇到类似问题的人能够快速定位问题
HttpContext rewritePath后中文乱码的更多相关文章
- RedHat安装Oracle后中文乱码
radhat7.1 Oracle11gr2 安装Oracle时忘记设置字符集,导致安装后中文乱码,中文变成"???????????" 分析原因是Oracle服务器端和客户端的字符集 ...
- 安装好centOS5.5 后中文乱码
1.网页浏览的中文乱码 [root@localhost ~]# yum install fonts-chinese 下载完毕后,浏览器可以浏览中文网页. 2.应用显示中文乱码 #vi /etc/sys ...
- tomcat 发布后中文乱码问题
接口收到数据,使用Eclipse运行调试中文正常显示,发布到Tomcat后中文出现乱码情况: 解决方法: tomcat启动时默认使用系统编码,可更改tomcat bin目录下catalina.bat文 ...
- .html 页面修改成 .jsp 后缀后中文乱码解决办法。
.html 后缀的文件,如果直接将 .html后缀改成 .jsp 后缀,则会乱码. 正确方法如下: 将如图的代码中 html 声明去掉,然后加上这段代码:<%@ page language=& ...
- 关于 IntelliJ 的 IDEA PyCharm 等更新 2019.2 后中文乱码 的解决方案
关于IntelliJ 的2019.2 更新后的中文乱码解决方案 设置 备用字体 file -> Setting -> Editor ->Font 由于编程常用英文首选字体font默认 ...
- Tomcat启动后中文乱码,怎么解决这个问题
今天很疑惑这个问题,于是去网上找了答案,结果是需要修改Tomcat根目录下面的"logging.properties"文件,把所有的encoding=UTF-8的改成encodng ...
- MySQL用Load Data local infile 导入部分数据后中文乱码
今天在两台MySQL服务器之间导数据,因为另一个MySQL服务器是测试用的,差一个月的数据,从现有MySQL服务器select到一个文件,具体语句是: select * from news where ...
- Oracle使用PLSQL导入数据后中文乱码的解决方法
新建环境变量 名:NLS_LANG 值:SIMPLIFIE DCHINESE_CHINA.ZHS16GBK 保存后重启PLSQL Developer 重新导入. 如果还是乱码,将上面8的环境变量值改为 ...
- Oracle导入数据后中文乱码的解决方法
解决方法: 方法一. 1.在运行命令行输入regedit,打开注册表编辑器 2.找到HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb11g_home1 3.看N ...
随机推荐
- 2018.10.20 NOIP模拟 蛋糕(线段树+贪心/lis)
传送门 听说是最长反链衍生出的对偶定理就能秒了. 本蒟蒻直接用线段树模拟维护的. 对于第一维排序. 维护第二维的偏序关系可以借助线段树/树状数组维护逆序对的思想建立权值线段树贪心求解. 代码
- 2018.10.15 NOIP训练 hyc的等比数列(数论+枚举)
传送门 一道不错的枚举题. 显然桶排序之后瞎枚举一波. 考虑枚举首项和末项,假设首项除去一个最大的平方因子得到的结果为xxx. 那么末项一定等于xxx乘上一个平方数. 于是我们枚举首项,算出xxx然后 ...
- 2018.06.29 NOIP模拟 边的处理(分治+dp)
边的处理(side.cpp) [问题描述] 有一个 n 个点的无向图,给出 m 条边,每条边的信息形如<x,y,c,r><x,y,c,r><x,y,c,r>. 给出 ...
- 201709012工作日记--activity与service的通信机制
service生命周期 Service主要包含本地类和远程类. Service不是Thread,Service 是android的一种机制,当它运行的时候如果是Local Service,那么对应的 ...
- 使用系统的CoreLocation定位
//// ViewController.m// LBS//// Created by tonnyhuang on 15/8/28.// Copyright (c) 2015年 tonnyhua ...
- 20155302 2016-2017-2 《Java程序设计》第六周学习总结
20155302 2016-2017-2 <Java程序设计>第6周学习总结 教材学习内容总结 Java中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包括输入 ...
- 菜鸟——使用bootstrap
方法一: 直接在页面中加入bootstrap的网址,不需要做其他任何改动 <%-- Created by IntelliJ IDEA. User: JC Date: 2017/2/24 Time ...
- Accepted Technical Research Papers and Journal First Papers 【ICSE2016】
ICSE2016 Accepted Paper Accepted Technical Research Papers and Journal First Papers Co-chairs: Wille ...
- MVC4 项目开发日志(1)
最近一直在定义一个功能全面,层次结构分明的框架.一边学习一边应用.
- ASP.Net Core 2.2 MVC入门到基本使用系列 (四)
本教程会对基本的.Net Core 进行一个大概的且不会太深入的讲解, 在您看完本系列之后, 能基本甚至熟练的使用.Net Core进行Web开发, 感受到.Net Core的魅力. 本教程知识点大体 ...