java - “词法排序”base64 的定义是什么,为什么 RFCC-1940 显然是规范参考?
问题描述
今天我正在阅读 Netty 的Base64Dialect类的文档。
它包括一种称为 的方言ORDERED
,它说的有点简短:
RFC1940 中描述的 Base64 的特殊“有序”方言。
切入正题,我找不到任何关于这是什么的定义,并且包含一个似乎在整个互联网上复制的错误参考。
而不是RFC-1940,该文档实际上链接到RFCC-1940,这显然是“读者评论”,并且是无意义的:
RFC 920:whkpiy clujzis brkyh dwojfmz jydwq hrnwcgklt fsltaiu
评论者 lsnxkrjo sxavymwpg
2006 年 10 月 26 日提交
相关 RFC:RFC-920
现在RFC-920似乎与 base 64 无关:
域要求
本备忘录重申并细化了建立域的要求,首先在RFC-881中描述。它为该讨论增加了相当多的细节,并介绍了有限的顶级域集。
RFC-1940是否相关?略读,不,我在这里看不到任何 base 64 编码定义:
源需求路由:数据包格式和转发规范(第 1 版)。
SDRP 的目的是支持源发起的路由选择,以补充现有路由协议为域间和域内路由提供的路由选择。[...]
事实上,在网上搜索“rfcc 1940 ordered base64”可以在许多其他文档中找到相同的 URL,但遗憾的是没有解释“lexically ordered base 64”。
在任何地方都有这个的合法定义吗?为什么没有其他人注意到这个 URL 指的是胡说八道?
解决方案
我还没有找到有序 Base64 的“合法定义”。(在撰写本文时,它甚至没有在Base64的维基百科页面中提及。)
如果您将代码视为规范(!),有序 Base64 是一种变体,其中字母表已重新排序为 ASCII 升序。这意味着有序 Base64 的自然排序与相应字节序列的自然排序相同。
没有订购 Base64 的规范是否有问题?
可能不是。
实际上,“指定”Base64(和 Base32 / Base16)的不同变体的 RFC 实际上更多的是试图描述变体而不是指定它们。这同样适用于维基百科的文章。
据我所知(谷歌搜索),很少使用有序的 Base64 变体。
引入有序变体的 Base64实现是遗留代码。(在过去的 8 年里没有改变)。需要 Base64 编码/解码能力的新 Java 代码应该使用
java.util.Base64
Java 8 中引入的标准 Java 类。
但令人担忧的是,您链接到的 javadocs(和其他人!)都指的是一个无意义的页面。该页面可能在某些时候有合法的描述,但看起来它已被破坏。
推荐阅读
- python - globals()['variable']=在 .py 文件中设置的值不会反映在其他 .py 文件中使用时的值更改
- sql - SQL Server 2000 上没有活动的事务
- javascript - 过滤键值对内数组中的特定值
- python - tkinter 循环遍历按键列表
- php - 如何在 PHP 中使用 foreach 循环 MYSQL 月份将月份添加到 +1 个月?
- mongodb - 查找 mongoDB 中是否不存在集合
- html - 如何在网格单元格中垂直居中元素?
- c# - 如何向 Windows 窗体应用程序调用 Web 服务异步方法?
- javascript - 使用 JavaScript 调整 td 或 tr 位置
- python - 为什么是这个值?