gpt4 book ai didi

java - Base64 字符串到 Windows1251(西里尔字母符号)

转载 作者:太空宇宙 更新时间:2023-11-04 15:08:47 26 4
gpt4 key购买 nike

我在将电子邮件附件(带有拉丁文和西里尔文符号的 windows-1251 编码的简单文本文件)转换为字符串时遇到问题。即我在转换西里尔字母时遇到问题。我得到的附件文件是 base64 编码的字符串,如下所示:

Base64Encoded email Attachment

Original file

所以当我尝试解码它时,我得到了“?”而不是西里尔字母符号。

如何获得正确的西里尔字母(俄语)符号而不是“?”

我已经尝试过此代码与所有编码,但没有任何帮助来获得正确的俄语符号。

    BASE64Decoder dec = new BASE64Decoder();

for (String key : Charset.availableCharsets().keySet()) {
System.out.println("K=" + key + " Value:" +
Charset.availableCharsets().get(key));
try {
System.out.println(new String(dec.decodeBuffer(encoded), key));
} catch (Exception e) {
continue;
}
}

先谢谢你了。

最佳答案

我对 BPEL 及其使用的协议(protocol)不是很熟悉。如果使用某些二进制协议(protocol)在节点之间进行通信,则必须 1) 确保客户端和接收方使用相同的字符集,2) 将 java 字符串转换为该编码中的正确字节。 Java 在内部以 UTF-16 格式存储字符串。所以当你执行String correct = new String(commonName.getBytes("ISO-8859-1"), "ISO-8859-5")时您将得到正确的 UTF-16 字符串。然后您需要将其导出为请求编码的字节,例如。 byte[] buff = correct.getBytes("UTF-8")假设您在节点之间使用的编码是 UTF-8。如果编码不同,那么您必须确保它实际上支持西里尔字符(例如 ISO-8859-1 支持它)。

如果您使用 XML 进行数据交换,请确保它在 <?xml encoding="UTF-8"?> 中使用合适的编码。 。然后,您不需要使用字节,只需正确“导入”字符串(请参阅 correct 变量)。写入 XML 会自动转换字符,但它(编码)必须支持您要写入的字符。所以如果你设置encoding="ISO-88591" ,那么你会再次得到那些问号。

关于java - Base64 字符串到 Windows1251(西里尔字母符号),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21624035/

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