Base64 解码失败。我遇到了一个非常奇怪的问题。我尝试解码这个字符串,但是解码失败

问题描述 投票:0回答:2

原弦:

从 order_info GROUP BY 产品名称中选择产品名称 HAVING COUNT(*) > 6;

Base64 字符串:

U0VMRUNUIHByb2R1Y3RfbmFtZQ0gRlJPTSBvcmRlcl9pbmZvDSBHUk9VUCBCWSBwcm9kdWN0X25hbWUNIEhBVklORyBDT1VOVCgqKSA+IDY7**

Java 解码失败:

String test_str = "U0VMRUNUIHByb2R1Y3RfbmFtZQ0gRlJPTSBvcmRlcl9pbmZvDSBHUk9VUCBCWSBwcm9kdWN0X25hbWUNIEhBVklORyBDT1VOVCgqKSA+IDY7";
byte[] decodedBytes = Base64.getDecoder().decode(test_str);
String strrrr = new String(decodedBytes);
System.out.println("strrrr length  :   " + strrrr.length()); // 81
System.out.println(" strrrr : " + strrrr);  //  HAVING COUNT(*) > 6;
// tell me thy ???

python解码失败:

import base64
test_str = "U0VMRUNUIHByb2R1Y3RfbmFtZQ0gRlJPTSBvcmRlcl9pbmZvDSBHUk9VUCBCWSBwcm9kdWN0X25hbWUNIEhBVklORyBDT1VOVCgqKSA+IDY7"
decoded_str = base64.b64decode(test_str).decode('utf-8')
print(len(decoded_str))  # 81
print(decoded_str)  #  HAVING COUNT(*) > 6;
#  Why ???

JavaScript解码成功:

const base64String = "U0VMRUNUIHByb2R1Y3RfbmFtZQ0gRlJPTSBvcmRlcl9pbmZvDSBHUk9VUCBCWSBwcm9kdWN0X25hbWUNIEhBVklORyBDT1VOVCgqKSA+IDY7"; // base64 string
const decodedString = atob(base64String); 
console.log(decodedString); // SELECT product_name FROM order_info GROUP BY product_name HAVING COUNT(*) > 6;

我该如何解决这个问题?

javascript python java base64
2个回答
-1
投票

您需要使用正确的字符编码。在这种情况下,原始字符串似乎是 ASCII 或其他字符集,而不是 UTF-8。 T

Java:

String strrrr = new String(decodedBytes, StandardCharsets.ISO_8859_1);

Python:

decoded_str = base64.b64decode(test_str).decode('ISO-8859-1')

-1
投票

我在java中尝试了你的代码并且它有效。 我认为你的源代码不是utf-8。 将其转换为 UTF-8 并重试。

© www.soinside.com 2019 - 2024. All rights reserved.