c语⾔中百分号ld是什么意思,URL中的百分号的⿇烦
最近在 ASP.NET 2.0 中,需要将⼀组字节(byte[])⽤ GET 参数传递到另⼀个 .aspx 页⾯,采取的办法是进⾏ BASE64 编码。⾸先将byte[] 进⾏ BASE64 编码(Convert.ToBase64String),然后调⽤ Server.UrlEncode 进⾏ % 转换,因为 BASE64 ⾥有“+”、“=”等特殊字符。
url编码处理在传递过去之后,发现转码后有百分号出现的请求都会失败。于是检查,最后发现有两个“意外”:⼀、获取到的 GET 参数,已经是 % 解码后的了;⼆、解码后的“+”进⼀步被解成了空格“ ”。不得以,只有对获取的 GET 参数字符串进⾏空格到“+”的替换,然后⽤Convert.FromBase64String 解码正常。
对 URL 中的 % 进⾏处理,需要⼏分⼩⼼,因为很难知道编码前的 % 是否需要再次编码,同时也很难知道解码后的 % 是否需要再次解码。这⾥有⼀个缺陷就是,百分号本⾝并不能指⽰它是数据还是转义字符。⼀个编码过的百分号,经过再次编码,就可能变成“%25”,⽽解码的时候,就需要两次解码才⾏。
这样的问题在各种“转义字符”中都存在,HTML 中的表⽰字符“&”的“&”,可能变成 &。⼆次编码可能是需要的,但是却不能避免⼆次编码⼀定是正确的,尤其当编码前字符串来路不明的时候。
转义似乎是必须的,但是也是⿇烦的,⽆赖,只有⼩⼼。
阅读(10248) | 评论(0) | 转发(0) |

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。