0

ファイルを読み取る入力ストリームを取得しようとしています。これはプレーンテキストで、いくつかの画像と別のファイルが埋め込まれてbase64おり、文字列に再度書き込みます。しかし、エンコーディングを維持するということは、つまり、文字列に次のようなものを入れたいということです。

/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIf
IiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7

Base64InputStream私はパッケージのクラスなどを試してきましたorg.apache.commons.codecが、それを理解することはできません。どんな種類の助けも本当に感謝しています。前もって感謝します!

編集

リーダーを使用したコード:

 BufferedReader br= new BufferedReader(new InputStreamReader(bodyPart.getInputStream()));
                        StringBuilder sb = new StringBuilder();
                        String line;
                        while ((line = br.readLine()) != null) {
                            sb.append(line);
                        }
                        br.close();

結果として次のようなものを取得します。.DIC;ÿÛC;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ÿÀ@@"ÿÄ

4

4 に答える 4

2

これを試しましたか:

final byte[] bytes64bytes = Base64.encodeBase64(IOUtils.toByteArray(is)); final String content = new String(bytes64bytes);

于 2015-04-27T12:30:22.810 に答える
1

通常の InputStream オブジェクトがある場合は、Apache 共通ライブラリ クラスBase64InputStreamコンストラクターを使用して、そこから Base64 でエンコードされたストリームを直接取得できます。

于 2013-12-19T12:43:45.507 に答える
1

一部の base64 データを含むテキスト ファイルは、ファイルの残りの文字セットで読み取ることができます。

Base64 エンコーディングは、ASCII や UTF-8 など、ほぼすべての char エンコーディングで変更されない限られた文字セットでバイトをエンコードする手段です。

Base64 は文字セット エンコーディングではありません。ファイルを文字列に読み込むときに、base64 でエンコードされたデータがあることを指定する必要はありません。

そのため、テキスト ファイルが一般的に UTF-8 である場合 (その可能性が高い)、base64 でエンコードされたストリームが含まれていても、問題なく読み取ることができます。単純に基本的なリーダーを使用し、デコードしたくない場合は Base64InputStream を使用しないでください。

リーダーでファイルを開くときは、エンコーディングを指定する必要があります。わからない場合は、 、 、 などUTF-8、ありそうなものでテストすることをお勧めしUS-ASCIIますISO-8859-1

于 2012-07-13T14:49:13.450 に答える
0

Java の mimepart から画像の base64 コンテンツ文字列を取得するこの投稿に触発された解決策を見つけました

base64コードをデコードして再度エンコードするのはちょっとばかげていると思いますが、これがこの問題を管理する唯一の方法だと思います。誰かがより良い解決策を提供できれば、それも本当にありがたいです。

ありがとう

于 2012-07-16T09:14:19.160 に答える