0

JavaでASN.1バイト配列を文字列に変換しようとしています。これまでの私の結果:

byte[] asn = ocspResponse.getEncoded();
String liccert = new String(asn, "Cp850");

この文字列には、非常に邪魔な文字列アーティファクトがいくつか含まれています。

このような:

4¦20110416173611Z0üÏ0üi0:0  

次のようにバイト配列を変換する方法はありますか?

RFMRIwEAYDVQQIEwlsb2NhbGhvc3QxFDASBgNV?
4

1 に答える 1

3

Stringコンストラクターを使用して任意のバイナリデータを文字列に変換しないください。そのコンストラクターは、実際にエンコードされたテキストであるバイナリデータを取得し、そこから文字列を構築するためのものです。データは実際にはエンコードされたテキストではなく、任意のバイナリデータです。もともとテキストだったふりをすることは、データ損失のレシピです。

最善のアプローチは通常、Base64でエンコードすることです。Apache Commons Codecこのパブリックドメインエンコーダーなど、これを行うためのサードパーティライブラリはたくさんあります。

たとえば、後者を使用すると、次のようになります。

String liccert = Base64.encodeBytes(asn);
于 2011-04-16T19:25:23.133 に答える