gpt4 book ai didi

java - BASE64Encoder 结果从 Windows 到 Unix 不同

转载 作者:行者123 更新时间:2023-11-29 03:42:54 26 4
gpt4 key购买 nike

以下程序输出在 Windows 和 Unix 系统上有所不同。您能否向我解释为什么会发生这种情况,以及如何使这种行为在 Unix 和 Windows 之间保持一致。

因为我使用 Unix 对文件进行编码,因此无法在 Windows 系统上对其进行解码。

如能提供这方面的帮助,我们将不胜感激。提前致谢。

import sun.misc.BASE64Encoder;
import sun.misc.CharacterEncoder;

public class TestEncode {

public static void main(String[] args) {

byte signature[] = "[35, 44, -31, 18, 78, 84, -113, 1, 27, 36, -79, -60, 75, -14, -80, -99, 65, 11, -45, -54, 23, -100, 74, -54, -26, -77, 33, -40, 104, 90, -33, 32, -123, -76, -27, -118, -25, -97, -85, 22, -64, 102, -7, 119, -65, 35, -114, 31, -83, 73, -57, 63, -7, 47, -31, 48, 28, -109, 54, -90, -24, -21, -102, 59, 82, -14, -52, -77, -22, -25, -15, -81, 70, 52, -42, 93, 76, -51, 96, 87, 29, -37, -40, -71, -121, 44, -44, 74, 23, -76, 29, 108, -56, 48, 46, -26, -73, -53, 90, 53, 25, -96, 115, -79, 93, -128, -46, -119, -30, 22, -107, -27, 6, -120, 2, 19, -72, -5, 30, -54, -34, 26, -22, -44, 93, 40, 84, -125]".getBytes();

byte encodedSignature[] = null;

CharacterEncoder encoder;
encoder = new BASE64Encoder();
encodedSignature = encoder.encode(signature).getBytes();


System.out.println(encodedSignature.length);

}

}

最佳答案

您可能在每台机器上使用不同的字符集。试试看:

System.out.println("Default Charset=" + Charset.defaultCharset());

我怀疑你在调用 getBytes() 方法时遇到了问题。默认情况下,它使用平台的默认字符集。如果您想保证它使用的是同一个,请通过调用 getBytes("UTF-8");

getBytes() 方法中指定它

关于java - BASE64Encoder 结果从 Windows 到 Unix 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12323581/

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