我正在尝试使用base64显示和更新简化中文(GB2312)字符集,Base64到GB2312工作正常但我无法将GB2312转换为base64
String str="17DP5Mqxx+vFxNXV";
Base64 base64=new Base64();
String gb2312=new String(base64.decode(str.getBytes()),"GB2312");
System.out.println("GB2312 = "+gb2312);
String baseString=new String(base64.encode(gb2312.getBytes()));
System.out.println("Base64 = "+baseString);
实际结果
GB2312 =装箱时请拍照
Base64 = 6KOF566x5pe26K + 35ouN54Wn
预期结果
GB2312 =装箱时请拍照
Base64 = 17DP5Mqxx + vFxNXV
答案 0 :(得分:8)
在将字符串转换为GB2312编码时,应在调用getBytes()
时指定字符集:
String baseString=new String(base64.encode(gb2312.getBytes("GB2312")));
原则上(并且完全安全)你应该在从Base64(str.getBytes()
)转换时执行此操作,但默认字符编码可能没问题,因为base-64编码使用US-ASCII的子集。谁知道 - 您可能正在默认编码为EBCDIC的平台上运行。