【发布时间】:2011-09-22 23:38:10
【问题描述】:
我正在尝试读取图像并使用 Base64 编码将其转换为字节数组,然后转换为字符串以通过网络发送。问题是当我尝试解码 Base64 编码的字符串时,我得到的数据不正确。
例如。我面临以下特殊字符的问题。
我正在使用以下代码进行编码:
byte[] b = Base64.encodeBase64(IOUtils.toByteArray(loInputStream));
String ab = new String(b);
IOUtils 是org.apache.commons.io.IOUtils。
和loInput
解码代码:
byte[] c = Base64.decodeBase64(ab.getBytes());
String ca = new String(c);
System.out.println(ca);
它为解码的字符串打印?。
谁能告诉我这个问题。
【问题讨论】:
-
Base64类从何而来(这不是标准的 Java API 类)? -
@jesper:我正在使用 apache commons (org.apache.commons.codec.binary.Base64)
-
nos 下面已经回答了您的问题。只是一个小评论:在将 String 转换为 byte[] 和反之亦然时,最好明确指定编码,而不是依赖于平台设置。我的意思是应该是 "new String(b, "UTF-8")" 和 "ab.getBytes("UTF-8")"
-
@Tarlog:啊啊啊!!非常感谢,这可能会解决我的问题。
-
@Tarlog:如果你使用
encodeBase64String,你已经得到了一个 UTF-8 字符串(实际上是 US_ASCII,因为 Base64 只使用来自 US_ASCII 的字符)。