メールでよく使用されている、UTF8,BASE64エンコードされた文字列を
BASE64デコードして表示させたいと思っています。
いったんすべてをUTF8にそろえてテストをしています。
ソース文字コードもUTF8にして、コンパイル時もUTF8を指定しています。
コマンドプロンプトもCHCPコマンドを使用してUTF8を指定しています。
実行結果を文字化けなく表示させたいのですが、
うまくいきません。原因わかりますでしょうか。
1行目がINPUTとしている文字列出力
2行目がBASE64エンコード結果
3行目がBASE64デコード結果
ちなみに2行目のBASE64エンコード結果をこちらのサイト
で入力してデコードすると正しく「ABCDEFGあい」と表示されますので、
BASE64エンコードまではうまくいっていると思っています。
<ソース>
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import org.apache.commons.codec.binary.Base64;
public class AppUtf8 {
String str = "ABCDEFGあい";
byte[] encoded = new byte[0];
byte[] decoded = new byte[0];
public void commonsBase64() {
String encodedStr = "";
String decodedStr = "";
try {
System.out.println(str);
encoded = Base64.encodeBase64(str.getBytes("UTF-8"));
encodedStr = new String(encoded);
System.out.println(encodedStr);
byte[] decodedByte = encodedStr.getBytes("UTF-8");
decoded = Base64.decodeBase64(decodedByte);
decodedStr = new String(decoded);
System.out.println(decodedStr);
} catch (UnsupportedEncodingException e) { e.printStackTrace(); }
}
public static void main(String[] args) {
AppUtf8 app = new AppUtf8();
System.out.println("Apache Commons Codec:---------------");
app.commonsBase64();
}
}

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/02/06 12:12