C#和Java之间的Base64区别

image 是图像文件的字符串。

我在C#中具有以下代码:

Convert.ToBase64String(image);

和Java中的代码如下:

org.apache.commons.codec.binary.Base64.encodeBase64(image.getBytes())

结果是不同的。

有人说是因为

  • Java字节:-128至127

  • C#字节:0到255

但是我该如何解决呢?如何Convert.ToBase64String()在Java中实现C#?通过使用Java,我需要与C#中相同的结果。

回答:

您正在对 字符串进行 base64编码吗?你想做什么?您首先需要将字符串转换为字节序列,然后选择一种编码,例如UTF-8或UTF-16。

我的猜测是您设法在双方上使用了不同的编码。Java

String.GetBytes()使用默认字符集(在西方Windows版本上可能类似于Latin1)。对于C#,您没有发布相关代码。

要解决此问题,请选择一种编码,并在两侧明确使用它。我建议使用UTF-8

在Java方面,您应该使用正确的编码方法,因此您不会以“修饰的UTF-8”结尾,但是由于我不是Java程序员,所以我不知道哪些方法会输出修饰的UTF-8

。我 认为 只有在您滥用某些内部序列化方法时才会发生。

有符号和无符号字节在这里不相关。中间字节缓冲区将有所不同,但是原始字符串和base64字符串在两侧应相同。

以上是 C#和Java之间的Base64区别 的全部内容, 来源链接: utcz.com/qa/429301.html

回到顶部