豫言 / 豫言操作系统网址 @ 0.2.0

统一网址成分编码的公共接口。

源码浏览已生成;不能解析的文件以纯文本展示,不表示通过类型检查。

规范.汉语.md

# 网址接口规范 0.2.0

`编码网址成分` 接受一条豫言字符串,按 UTF-8 字节进行百分号编码。ASCII 字母、数字及 `-_.!~*'()` 原样保留,其余字节写成大写十六进制的 `%HH`;例如 `a/b` 得 `a%2Fb`,`函数` 得 `%E5%87%BD%E6%95%B0`。结果只是一段成分文字,不含查询键、等号或完整网址。输入中有不能表示为有效 Unicode 标量的内容时报告调用失败,不做有损替换。

`解码网址成分` 把 `%HH` 序列按严格 UTF-8 解为文字;不完整的百分号、非十六进制数字和非法 UTF-8 均报告失败。`+` 保持加号,`%2F` 解为斜线,调用方在使用路径段前仍须自行验证解码后的斜线、反斜线和控制字符。它不解析完整网址。

两函数无权限要求、无外部副作用。浏览器、Node.js、CF Worker 和原生宿主均可实现;即使某宿主用本地纯豫言代码实现,公开签名与结果也须一致。本版不含完整 URL 解析及 IDNA 域名处理。

规范.文言.md

# 网址之约 0.2.0

编码网址成分,取豫言一文,以 UTF-8 逐字节作百分号编码。ASCII 字母、数及 `-_.!~*'()` 不易;余字节皆成大写十六进制 `%HH`。如 `a/b` 成 `a%2Fb`,`函数` 成 `%E5%87%BD%E6%95%B0`。所返惟成分,不兼键、等号或全址。若输入非有效 Unicode 标量,须报失,不得损文而代之。

解码网址成分,严格验 `%HH` 与 UTF-8;百分号残缺、非十六进制或坏字码皆报失。`+` 不易,`%2F` 解为斜线;用于路径段者,客仍须别验斜线、反斜线与控字符。此术不析全址。

二术皆无授权与外效。浏览器、节点、云工、原生皆可具之;虽以豫言纯码行,签名及结果亦须同。本版未定全址解析及 IDNA。