弘帝企业智能建站系统交流平台

 找回密码
 立即注册
查看: 2523|回复: 1

【C#】Server.TransferRequest完美解决页面请求乱码问题

[复制链接]
发表于 2020-12-1 18:23:43 | 显示全部楼层 |阅读模式
今天使用Server.Transfer请求另一个页面,发现一个乱码问题。下面的过程非常绕,参考:弘帝建站系统->微信->图文推送

ASP页面(GBK)内部POST到Default.aspx(UTF-8)Server.Transfer到另一个default.aspx(UTF-8)
由于ASP页面是GBK,所以两个Default.aspx也显示是GBK,而读取的内容却存不定性,比如UTF-8文件
要想把utf-8文件读取出来在ASP页面显示,必定乱码,于是在被transfer的第二个default.aspx做了以下代码。if (Session.CodePage == 936)
{
    byte[] bytes = Encoding.UTF8.GetBytes(ret);
    ret = Encoding.GetEncoding("GBK").GetString(bytes);
}


发现转码成功了,但是所有文中的<,即左尖括号,都变成了问题。

这时回到被ASP POST的第一个Default.aspx,用到的是Server.Transfer(第二个Default.aspx),很显然这儿经过了一个页面到另一个页面传输,极有可能是在传输过程中出现了乱码。
突然发现Server.TransferRequest也可以传输参数,尝试后,现在解决了以上红字问题。

特此记录。
回复

使用道具 举报

 楼主| 发表于 2020-12-1 22:42:31 | 显示全部楼层
更详细的资料:
https://docs.microsoft.com/zh-cn ... =netframework-4.7.2
TransferRequest(String)        
异步执行指定的 URL,不保留传值哟!
TransferRequest(String, Boolean)        
异步执行指定的 URL 并保留查询字符串参数,true传值。
TransferRequest(String, Boolean, String, NameValueCollection)        
使用指定的 HTTP 方法和标头异步执行指定的 URL。
TransferRequest(String, Boolean, String, NameValueCollection, Boolean)        
用指定的 HTTP 方法、标头和路径,执行指定的 URL 上的异步执行和选择保留格式值和用户标识。



回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|弘帝企业智能建站系统 ( 皖ICP备07503252号 )

GMT+8, 2024-11-27 16:07 , Processed in 0.049295 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表