gpt4 book ai didi

java - Azure 搜索索引器 base64encode 函数

转载 作者:行者123 更新时间:2023-12-02 23:59:02 24 4
gpt4 key购买 nike

我对索引器中的 azure64encode 函数有疑问。当我尝试通过 Java 进行编码时,我得到了不同的编码,而不是在 azure 索引器中:

azure

        {
sourceString= "00cbc05fc051e634d7d485c7879fe7bdb4f6509a"
base64EncodedString= "MDBjYmMwNWZjMDUxZTYzNGQ3ZDQ4NWM3ODc5ZmU3YmRiNGY2NTA5YQ2",
}

在Java中

       {
sourceString= "00cbc05fc051e634d7d485c7879fe7bdb4f6509a"
base64EncodedString= "MDBjYmMwNWZjMDUxZTYzNGQ3ZDQ4NWM3ODc5ZmU3YmRiNGY2NTA5YQ==",
}

为什么在 azure 中,java中的“2”结尾为“==”???

两者都被解码为相同的字符串。

最佳答案

索引器字段映射末尾的“2”表示“==”中有 2 个等号。

标准base64 encoding使用等号作为字符串末尾的填充字符,使长度成为 4 的倍数,但它们对于解码原始字符串来说不是必需的。

由于标准编码使用 URL query strings 中有意义的字符有时编码的字符串会通过 URL 传递,因此有一些版本可以交换/省略字符以使编码 URL 安全。

索引器有 base64Encode 的 2 个实现并默认使用 HttpServerUtility.UrlTokenEncode ,它将编码字符串末尾的所有等号替换为这些等号的计数。另一种实现只是省略等号,您可以通过设置 useHttpServerUtilityUrlTokenEncode 在两种行为之间进行选择(默认为 true,但您可能想要 false)。

您可以在索引器/Java 中对字符串 00>00?00 进行编码,以准确查看您所获得的行为,并检查此 table了解如何在它们之间进行转换。

注意 - 使用 HttpServerUtility.UrlTokenEncode 的标准 base64 解码非常具有误导性,应该避免。尝试编码和解码 aaaaaa,有时你会得到原始字符串,有时却得不到。

关于java - Azure 搜索索引器 base64encode 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67487090/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com