我无法在 Java (Android) 和 .NET (Visual Basic) 中将文本转换为 Base64 字符串。ASCII 字符的普通(可读)形式可以很好地转换。但是当涉及到特殊字符(代码大于 128 的字符)时,它们给我带来了麻烦。
例如,我尝试转换 ASCII 值为 65 的字符代码(字符“A”)。
我的Java代码是:
char a = 65;
String c = String.valueOf(a);
byte bt[] = c.getBytes();
String result = Base64.encodeToString(bt, Base64.DEFAULT);
我的 .NET 代码是:
Dim c As String = Chr(65)
Dim result as String = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(c))
它们都返回相同的结果:“QQ==”。这可以。但是当我尝试转换一个特殊字符时,例如一个字符代码 153。然后它返回不同的结果。
char a = 153;
String c = String.valueOf(a);
byte bt[] = c.getBytes();
String result = Base64.encodeToString(bt, Base64.DEFAULT);
这将返回“wpk=”
和我相同的 .NET 代码:
Dim c As String = Chr(153)
Dim result as String = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(c))
这将返回“4oSi”
这太奇怪了。这里有什么问题。我在两个平台上都使用本机 Base64 库。我的代码有问题吗?