问题描述
您正在对 字符串进行 base64编码吗?你想做什么?您首先需要将字符串转换为字节序列,然后选择一种编码,例如UTF-8或UTF-16。
我的猜测是您设法在双方上使用了不同的编码。JavaString.GetBytes()
使用默认字符集(在西方Windows版本上可能类似于Latin1)。对于C#,您没有发布相关代码。
要解决此问题,请选择一种编码,并在两侧明确使用它。我建议使用UTF-8
。
在Java方面,您应该使用正确的编码方法,因此您不会以“修饰的UTF-8”结尾,但是由于我不是Java程序员,所以我不知道哪些方法会输出修饰的UTF-8
。我 认为 只有在您滥用某些内部序列化方法时才会发生。
有符号和无符号字节在这里不相关。中间字节缓冲区将有所不同,但是原始字符串和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#中相同的结果。