Base64 UTF-32 でエンコードされた文字列がありますが、デコード中に空白が含まれます。org.apache.commons.codec ライブラリを使用しています。
以下のコードをエンコードするために使用され、期待どおりに正常に動作します
public static String encodeBase64(String encodeString,String utfType){
try {
return new String(Base64.encodeBase64String(encodeString.getBytes(utfType)));
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
System.out.println(encodeBase64("This is UTF-32 encoading test","UTF-32"));
これにより、Base64でエンコードされた文字列が次のようになります
AAAAVAAAAGgAAABpAAAAcwAAACAAAABpAAAAcwAAACAAAABVAAAAVAAAAEYAAAAtAAAAMwAAADIAAAAgAAAAZQAAAG4AAABjAAAAbwAAAGEAAABkAAAAaQAAAG4AAABnAAAAIAAAAHQAAABlAAAAcwAAAHQ=
上記の文字列をデコードしたい
public static String decodeBase64(String decodeString,String utfType){
try {
byte[] actualByte = java.util.Base64.getDecoder() .decode(decodeString);
return new String(actualByte);
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
System.out.println(decodeBase64("AAAAVAAAAGgAAABpAAAAcwAAACAAAABpAAAAcwAAACAAAABVAAAAVAAAAEYAAAAtAAAAMwAAADIAAAAgAAAAZQAAAG4AAABjAAAAbwAAAGEAAABkAAAAaQAAAG4AAABnAAAAIAAAAHQAAABlAAAAcwAAAHQ=","UTF-32"));
以下のように出力されますが、正しくありません
T h i s i s U T F - 3 2 e n c o a
d i n g t e s t
以下の値のようにデコードして元の文字列として取得する方法 これは UTF-32 エンコーディング テストです","UTF-32