-

@ CXPLAY
2025-04-27 06:45:10
我的朋友, 不要再往文档和文章的 HTTP URL 路径里面装非 ASCII 字符了.
在 URL 里面用中文字符作为文章唯一 ID 还不如用 UNIX 时间戳, 就算是随机哈希和自增 ID 都比百分号编码后的 URL 的传播效果更好. 仅仅是为了中文本地化还是中文国际化? 就和 IDN 域名一样, 只是浏览器地址栏的虚假表象而已. HTTP, HTTP URL 并不同于文件系统, 更不同于软件里的引用 path.
在信息传播面前, URL 是不如 Open Graph 可靠的, 不应该期望 URL 就携带大部分可读信息, 况且这还是指向中心化的 PGC 甚至 UGC 内容.
指向内容和信息的 URL 要更利于传播, 而不是利于直接信息表达, 应该直接携带文章标题分享而不是把文章标题直接写进 URL 然后去指望传播途中不出差错. 百分号编码之后的非 ASCII 字符对人类的可读性和传播性为零, 更不要说人人都在依赖各式各样平台的各种奇怪的行为的自动链接识别, 这是更加不可靠的传播障碍.
在有标记语法和富文本渲染里面使用直接的 Unicode 编码 HTTP URL 而不是百分号编码是合理的, 因为人可以完全限定这段字串符的属性. 标记语言特别是 Markdown 更不应该期待解析器去自动处理链接, 应该使用尖括号来标记这段「HTTP 开头的 Unicode 字串符是链接」, 这是写给解析器看的, 更是写给人类看的. 标记语言的源代码人类可读性就和文件扩展名一样, 对机器来说完全是浪费时间和空间, 但这是人类始终需要的.
为了浏览器自动编码, Web 服务器和文件系统的冲突的妥协并不难理解, 况且这部分连字母大小写的标准都是问题. 但是, 文章的「永久链接(Permalink)」这不是文件系统和 Web 服务器强迫 CMS 做的, 如果你的 CMS 还在只能用标题作为永久链接还不会自动忽略非 ASCII 字符并添加唯一标记, 那么说明这个 CMS 该换了. 给文章脸滚键盘打个永久路径 ID 并不比起文章标题要难.
如果不是体量巨大的中心化 UGC, 或者是日发文章也能上千万的 PGC 平台. 不想用自增 ID, 那 UNIX 时间戳甚至 CRC8 就足够了, 哈希碰撞很难找到被协议, 域名和路径重重限定的 HTTP URL 上. 最后剩下的就只有锚点 ID 了, 这就更是纯看 CMS 愿不愿意而不是写的人想不想了, 只有很少的一部分 CMS 和解析器支持自定义锚点 ID, 这是客观现状, 如果不能或者不想继续麻烦给每个分节标题定义 ID, 妥协罢了.