Base64编码简介
Base编码使用"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",再加上补齐长度的1个或2个"="号,共计65种字符
Base64编码后在Url中传递
查看Base64中的65种字符,其中有"="与"+"在Query String有特殊含意
"="用来连接参数名与其值
例如:..........?a=XY=Z, 则Request.QueryString["a"] 还能识别出来
"+"用来表示" "(空格)
例如:..........?a=X+Y, 则Request.QueryString["a"]的结果会变为"X Y"
这样经过Url传递后解码可能会出错
另有"/"是Url中的目录符号,也不能直接出现在Url中
要在Url中传值,就必须将+、/、=替换掉。用来替换的字符只要是非Base64字符即可,也就是不在那65个字符中。
下面示例代码用的是*、-、. (当然也可以用~、^等字符)
/// <summary> /// 从适用于URL的Base64编码字符串转换为普通字符串 /// </summary> public static string FromBase64StringForUrl( string base64String) { string temp = base64String.Replace( '.' , '=' ).Replace( '*' , '+' ).Replace( '-' , '/' ); return Encoding.UTF8.GetString(Convert.FromBase64String(temp)); } /// <summary> /// 从普通字符串转换为适用于URL的Base64编码字符串 /// </summary> public static string ToBase64StringForUrl( string normalString) { return Convert.ToBase64String(Encoding.UTF8.GetBytes(normalString)).Replace( '+' , '*' ).Replace( '/' , '-' ).Replace( '=' , '.' ); } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述