我从 SOAP 请求中接收到 base64 编码的 zip 文件(以字符串的形式)。
我可以使用独立程序 b64dec.exe 成功解码字符串,但我需要在 java 例程中完成。我正在尝试使用 Apache commons-codec-1.7.jar 例程对其进行解码( theZipString ):
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.binary.StringUtils;
StringUtils.newString(Base64.decodeBase64(theZipString), "ISO-8859-1");
Zip 文件阅读器打开生成的文件并显示内容文件列表,但内容文件有 CRC 错误。
我将我的 java 例程的结果与 b64dec.exe 程序(使用 UltraEdit)的结果进行了比较,发现它们是相同的,除了在 b64dec.exe 结果中出现的八个不同字节值被替换由我的 3F(“?”)。这些值及其 ISO-8859-1 字符名称为 A4('currency')、A6('broken bar')、A8('diaeresis')、B4('acute accent')、B8('cedilla')、BC (“粗俗分数 1/4”)、BD(“粗俗分数 1/2”)和 BE(“粗俗分数 3/4”)。
我猜 StringUtils.newString 函数没有将这八个值转换为字符串输出,因为我尝试了其他 8 位字符集:UTF-8 和 cp437。他们的结果相似但更糟,有更多的 3F,“?” 换人。
有什么建议么?我应该为 newString 函数使用什么字符集来转换 .zip 字符串?Apache 功能是否无法进行这种翻译?有没有更好的方法来做这个解码?
谢谢!