按 application/x-www-form-urlencoded 提交 form,哪些字符应该被 url-encode?

jmcooler 2016-08-16 07:13:19
我不怎么熟悉 ASP.NET 前端和后端编程,我之所以发到这个坛子里,是因为你们熟悉 application/x-www-form-urlencoded。

我是搞 WinForm 开发的,不过遇到了 Post 提交网页数据:

Chrome 浏览器在以 application/x-www-form-urlencoded 提交数据时,url-encode 规则如下:

-_.* 4 个字符被认为是安全字符,不会被 Encode,空格被编码为加号,'+' 被编码为 %2B

不过,C# 的 Uri.EscapeDataString() 和另外几个 url 编码函数,都不是这个规则:

-_.*!() 共 7 个字符都被认为是安全字符,不会被 Encode,空格被编码为%20,'+' 被编码为 %2B

而 RFC 3986,仅认定 -_. 3个字符为安全字符,其余全部被用 %Hex 方式编码。

那问题来了,application/x-www-form-urlencoded 究竟应该怎么编码要提交的键值对啊?
如果一律按 RFC 3986 规则来编码,服务器能正确解码么?

...全文
2947 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
System.Web.HttpUtility.UrlEncode
  • 打赏
  • 举报
回复
引用 1 楼 FoxDave 的回复:
统一编码解码不行吗?
lz 可能不知道 .net 的 web Encode 库函数、不知道“编码解码”,想自己发明一套类库。
  • 打赏
  • 举报
回复
纠结这一大堆没有意义。你不会是会点 c 编程就使用 c# 吧? 谁知道你如何提交数据的呢?怎么别人提交数据没有问题,而你有了问题时偏偏不贴出问题源代码和直接的数据调试、而仅仅来问底层概念呢?
Justin-Liu 2016-08-17
  • 打赏
  • 举报
回复
统一编码解码不行吗?
bidisty 2016-08-17
  • 打赏
  • 举报
回复
库类很丰富,要用心找

62,242

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧