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ライブラリを使用しています。私のコードに何か問題がありますか?