encodeURIComponent算法源代码

2024-01-12

我正在使用 Javascript 开发钛合金应用程序。我需要一个开源实现encodeURIComponent在 JavaScript 中。

有人可以指导我或向我展示一些实施吗?


该函数的规范位于15.1.3.4 https://262.ecma-international.org/5.1/#sec-15.1.3.4.


V8 的现代版本(2018)用 C++ 实现。看src/uri.h https://chromium.googlesource.com/v8/v8/+/refs/heads/7.0.99/src/uri.h#34:

// ES6 section 18.2.6.5 encodeURIComponenet (uriComponent)
static MaybeHandle<String> EncodeUriComponent(Isolate* isolate,
                                              Handle<String> component) {

这会调用Encode定义于uri.cc https://chromium.googlesource.com/v8/v8/+/refs/heads/7.0.99/src/uri.cc#273.


旧版本的 V8 用 Ja​​vaScript 实现,并在 BSD 许可证下分发。参见第 359 行src/uri.js https://chromium.googlesource.com/v8/v8/+/3.26.4/src/uri.js#359.

// ECMA-262 - 15.1.3.4
function URIEncodeComponent(component) {
  var unescapePredicate = function(cc) {
    if (isAlphaNumeric(cc)) return true;
    // !
    if (cc == 33) return true;
    // '()*
    if (39 <= cc && cc <= 42) return true;
    // -.
    if (45 <= cc && cc <= 46) return true;
    // _
    if (cc == 95) return true;
    // ~
    if (cc == 126) return true;

    return false;
  };

  var string = ToString(component);
  return Encode(string, unescapePredicate);
}

它不叫encodeURIComponent在那里,但同一文件中的这段代码建立了映射:

InstallFunctions(global, DONT_ENUM, $Array(
    "escape", URIEscape,
    "unescape", URIUnescape,
    "decodeURI", URIDecode,
    "decodeURIComponent", URIDecodeComponent,
    "encodeURI", URIEncode,
    "encodeURIComponent", URIEncodeComponent
  ));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

encodeURIComponent算法源代码 的相关文章

随机推荐

  • Python 最佳实践 - 在哪里存储 API 密钥/令牌

    我正在构建一个使用 API 令牌和密钥来访问服务的系统 但存储它们的最佳位置在哪里 我想将代码推送到 GitHub 而不推送令牌 目前 我已将它们放在一个名为的空白文件中Constants py并且 在主 python 文件中 我导入Con
  • 将剪辑路径位置移动到鼠标光标

    我有一个 SVG 形状 用作clip path在图像顶部 SVG 形状应遵循鼠标的位置 如果我使用的话我可以让它工作clip path circle 但如果使用则不然clip path url idOfMask 就像我在使用 SVG 作为剪
  • 如何使用 PHP 将 Word 文档转换为 XML?

    我想将 Word 文档 doc 和 docx 转换为 XML 我如何使用 PHP 来做到这一点 完成此操作后 我必须在该 XML 文件中添加一些数据 有人可以帮我吗 Word 文档 docx 是一个xml文件 只需解压即可
  • 无法从字符串中删除“空字符”

    我问过类似的question https stackoverflow com questions 17580662 how to read a text file that contains null character in delphi
  • 模板中的模板输入和模板引用变量

    我们使用 let 关键字创建模板输入变量 同时使用 var 创建模板引用变量 其中 var 是变量的名称 我们可以在模板中的任何位置引用模板引用变量 模板输入变量的范围怎么样 它与模板引用变量的范围有何不同 有人可以通过例子帮助我理解吗 d
  • 反应本机状态不更新

    我感觉我快要疯了 我在搜索栏中输入 x 但是this setState filter text 没有更新状态 console log this state filter 给我一个值 它的初始值在构造函数中设置 我可以看到文本变量的值为 x
  • 如何在 Python 绘图程序中使用多点触控?

    我正在Python中构建一个简单的绘画程序作为一个项目 使用Pygame 它的工作原理是 当按下鼠标并在表面上拖动它时 它基本上会绘制一系列圆圈 它还有其他一些小事情发生 但事情我想问的是 有没有一种方法可以将您知道的 mouse get
  • Python:获取正则表达式匹配的文本

    我在 Python 中有一个正则表达式匹配对象 我想获取它匹配的文本 说如果模式是 1 3 搜索字符串是 abc123xyz 我想得到 123 我怎样才能做到这一点 我知道我可以使用match string match start matc
  • 仅当设置另一个属性时才需要某个属性

    是否可以做一个属性required如果设置了另一个属性 例如 在下面的代码中 viewId必须制作属性required iff action属性已设置 XML
  • 在 OpenMP 中计算矩阵的条目

    我对 openMP 很陌生 但我正在尝试编写一个简单的程序来并行生成矩阵的条目 即对于 N M 矩阵 A 令 A i j i j 下面包含一个最小的示例 include
  • 任务 - 属性分配

    最初 我有以下内容 foreach Product product in products product ImageUri imageClient GetImageUri product GetImagePath 我想做的是并行处理所有产
  • 诗歌如何知道我的包位于 src 文件夹中?

    我有一个简单的问题 我曾经用我的包在根目录下创建一个诗歌项目 project toml mypackage init py mypackage py test mypackage py 我最近将测试移到了另一个目录中 因此该文件夹现在看起来
  • 赋值使指针无需强制转换

    我正在编辑一个快速排序代码 以便低 高和中的值指向数组元素而不是整数 这是我的代码 include
  • 通过http上传时Android图像损坏

    当我将图像从 Android 设备 v 2 2 上传到服务器 带有 php 的 apache 时 基本上 有与这里相同的问题 Android开发图片上传损坏 https stackoverflow com questions 3154224
  • 创建包含多个 HTTP 请求的 mime/multipart 请求

    我正在关注this http blogs msdn com b webdev archive 2013 11 01 introducing batch support in web api and web api odata aspx使用
  • PIL 中的 PNG 显示在 OS X Mavericks 上损坏?

    我注意到 PNG 图像不会在 OS X Mavericks 中使用 ImageTk PhotoImage 的 Tkinter 应用程序中显示 但是 GIF 和 JPEG 显示效果良好 没有打印错误或抛出异常 并且调试代码显示图像已读取并且具
  • pandas:带有 np.seterr(all='raise') 的 FloatingPointError 和丢失数据

    当我想查看涉及缺失数据的数据时 我收到了 FloatingPointError 错误 import numpy as np import pandas as pd np seterr all raise s pd Series np nan
  • Python 中本地网络的 IP 地址/主机名列表

    如何在 Python 中轻松获取本地网络的 IP 地址或主机名列表 如果它是多平台的那就最好了 但它需要首先在 Mac OS X 上运行 然后再在其他平台上运行 Edit 我所说的本地是指所有active本地网络内的地址 例如192 168
  • 反应错误:警告:列表中的每个子项都应该有一个唯一的“key”道具

    我收到以下错误 Warning Each child in a list should have a unique key prop Check the render method of App See https reactjs org
  • encodeURIComponent算法源代码

    我正在使用 Javascript 开发钛合金应用程序 我需要一个开源实现encodeURIComponent在 JavaScript 中 有人可以指导我或向我展示一些实施吗 该函数的规范位于15 1 3 4 https 262 ecma i