簡體   English   中英

Base64 InputStream到字符串

[英]Base64 InputStream to String

我一直在嘗試讓輸入流讀取一個文件,該文件是純文本,並在base64嵌入了一些圖像和另一個文件,然后再次將其寫入字符串中。 但是,保持編碼,我的意思是,我想要在String中添加以下內容:

/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;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ÿÀ@@"ÿÄ

您是否嘗試過這樣做:

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

可以使用文件其余部分的字符集讀取包含一些base64數據的文本文件。

Base64編碼是一種將字節編碼為有限的字符集的方式,這些字符對於幾乎所有char編碼(例如ASCII或UTF-8)都不會改變。

Base64不是字符集編碼,在將文件讀入字符串時不必指定您具有一些base64編碼的數據。

因此,如果您的文本文件通常為UTF-8(可能),即使它包含base64編碼的流,您也可以毫無問題地讀取它。 只需使用基本的閱讀器即可,如果您不想對其進行解碼,則不要使用Base64InputStream。

使用閱讀器打開文件時,必須指定encoding 如果您不知道,建議您使用UTF-8US-ASCIIISO-8859-1等可能的工具進行測試。

如果您有一個普通的InputStream對象,則可以使用apache公共庫類Base64InputStream構造函數直接從中獲取Base64編碼的流。

我找到了解決方案,其靈感來自於這篇文章,它從Java的mimepart獲取圖像的base64內容字符串

我認為這是一種愚蠢的解碼,並再次對base64代碼進行編碼,但這是我發現解決此問題的唯一方法。 如果有人可以提供更好的解決方案,也將不勝感激。

謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM