Azure 搜索索引器 base64encode 函数
Azure search indexer base64encode function
我对索引器中的 azure64encode 函数有疑问。当我尝试通过 Java 编码时,我得到了不同的编码,而不是在 azure 索引器中:
蔚蓝
{
sourceString= "00cbc05fc051e634d7d485c7879fe7bdb4f6509a"
base64EncodedString= "MDBjYmMwNWZjMDUxZTYzNGQ3ZDQ4NWM3ODc5ZmU3YmRiNGY2NTA5YQ2",
}
在Java
{
sourceString= "00cbc05fc051e634d7d485c7879fe7bdb4f6509a"
base64EncodedString= "MDBjYmMwNWZjMDUxZTYzNGQ3ZDQ4NWM3ODc5ZmU3YmRiNGY2NTA5YQ==",
}
为什么在 java“==”中的“2”结尾是天蓝色???
两者都被解码为相同的字符串。
索引器字段映射末尾的“2”表示“==”中有2个等号。
标准 base64 encoding 使用等号作为字符串末尾的填充字符以使长度成为 4 的倍数,但它们不是解码原始字符串所必需的。
由于标准编码使用在 URL query strings 中有意义的字符,有时编码后的字符串会通过 URL 传递,所以有些版本会交换 out/omit 字符来制作编码 URL-安全。
索引器有 2 个 base64Encode and defaults to using HttpServerUtility.UrlTokenEncode 的实现,它用这些等号的计数替换编码字符串末尾的所有等号。另一个实现简单地省略了等号,您可以通过设置 useHttpServerUtilityUrlTokenEncode
(默认为 true 但您可能想要 false)在两种行为之间进行选择。
您可以在 indexer/Java 中对字符串 00>00?00
进行编码,以准确查看您得到的行为,并检查此 table 以了解如何在它们之间进行转换。
N.B. - 使用带有 HttpServerUtility.UrlTokenEncode 的标准 base64 解码是非常误导的,应该避免。尝试编码和解码 a
、aa
、aaa
,有时你能得到原始字符串,有时却不能。
我对索引器中的 azure64encode 函数有疑问。当我尝试通过 Java 编码时,我得到了不同的编码,而不是在 azure 索引器中:
蔚蓝
{
sourceString= "00cbc05fc051e634d7d485c7879fe7bdb4f6509a"
base64EncodedString= "MDBjYmMwNWZjMDUxZTYzNGQ3ZDQ4NWM3ODc5ZmU3YmRiNGY2NTA5YQ2",
}
在Java
{
sourceString= "00cbc05fc051e634d7d485c7879fe7bdb4f6509a"
base64EncodedString= "MDBjYmMwNWZjMDUxZTYzNGQ3ZDQ4NWM3ODc5ZmU3YmRiNGY2NTA5YQ==",
}
为什么在 java“==”中的“2”结尾是天蓝色???
两者都被解码为相同的字符串。
索引器字段映射末尾的“2”表示“==”中有2个等号。
标准 base64 encoding 使用等号作为字符串末尾的填充字符以使长度成为 4 的倍数,但它们不是解码原始字符串所必需的。
由于标准编码使用在 URL query strings 中有意义的字符,有时编码后的字符串会通过 URL 传递,所以有些版本会交换 out/omit 字符来制作编码 URL-安全。
索引器有 2 个 base64Encode and defaults to using HttpServerUtility.UrlTokenEncode 的实现,它用这些等号的计数替换编码字符串末尾的所有等号。另一个实现简单地省略了等号,您可以通过设置 useHttpServerUtilityUrlTokenEncode
(默认为 true 但您可能想要 false)在两种行为之间进行选择。
您可以在 indexer/Java 中对字符串 00>00?00
进行编码,以准确查看您得到的行为,并检查此 table 以了解如何在它们之间进行转换。
N.B. - 使用带有 HttpServerUtility.UrlTokenEncode 的标准 base64 解码是非常误导的,应该避免。尝试编码和解码 a
、aa
、aaa
,有时你能得到原始字符串,有时却不能。