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 の結果に現れる 8 つの異なるバイト値が置き換えられることを除いて、それらは同一であることがわかりました。私の3F( "?")によって。値とその ISO-8859-1 文字名は、A4 (「通貨」)、A6 (「破線」)、A8 (「ダイエレシス」)、B4 (「急性アクセント」)、B8 (「セディラ」)、BC です。 (「下品画分 1/4」)、BD (「下品画分 1/2」)、および BE (「下品画分 3/4」)。
他の 8 ビット文字セット (UTF-8 と cp437) を試したため、StringUtils.newString 関数はこれらの 8 つの値を文字列出力に変換していないと推測しています。彼らの結果は似ていますが、より悪いです。代替品。
助言がありますか?.zip 文字列を変換する newString 関数には、どの文字セットを使用すればよいですか? Apache 機能はこの変換を行うことができませんか? このデコードを行うためのより良い方法はありますか?
ありがとう!