url-Encode 与 Base64 编码(用法)?

新手上路,请多包涵

我想知道…

(除了查询字符串中 base64 的加号“+”问题 - 它被翻译为“空格”并且可以通过 %2b 解决):—> 哪种是在 查询字符串中传输数据的首选方式?

这两个函数都可以通过 JS 命令使用:

  • btoa
  • encodeUriComponent

所以我问自己(和你):

我应该 什么时候 使用 什么? (我一直本能地使用 encodeUriCompoonent )。

定义不同的问题 - 但实现可能相似……

编辑

我想我找到了问的原因……(以及为什么以前没有人问过)

在此处输入图像描述

原文由 Royi Namir 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 595
2 个回答

base64 用于传输二进制数据。 (IE 不支持,无法编码空格字符。)

encodeURIComponent 只编码特殊字符。

一件有趣的事情是,如果没有 encodeURIComponent,你不能将 base64 应用于 unicode 字符串: https://developer.mozilla.org/en/DOM/window.btoa

原文由 meze 发布,翻译遵循 CC BY-SA 3.0 许可协议

这个问题的答案完全取决于您的服务器端应用程序。

’+’ 不会被客户端翻译成 ‘space’ - 它会被一些服务器端应用程序自动翻译成 ‘space’ ,主要是出于向后兼容的原因(相反,一些服务器端应用程序会将 ’+’ 保留为 ’+’ 符合 RFC3986 )。

As far as the client is concerned - btoa() and encodeURIComponent() (and encodeURI() and escape() ) just encode a string of text into different abstracted根据不同编码或转义算法的字符串 - btoa() 通常使用 base64 编码生成最小的结果字符串,但 meze 的评论 回复:unicode 在这里值得考虑。

需要注意的重要一点是您的服务器端应用程序(在您的案例中是一些基于 ASP.NET 的设置)然后使用什么将该字符串解码回其原始形式。

原文由 lucideer 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题