[英]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-8
, US-ASCII
或ISO-8859-1
等可能的工具進行測試。
如果您有一個普通的InputStream對象,則可以使用apache公共庫類Base64InputStream構造函數直接從中獲取Base64編碼的流。
我找到了解決方案,其靈感來自於這篇文章,它從Java的mimepart獲取圖像的base64內容字符串
我認為這是一種愚蠢的解碼,並再次對base64代碼進行編碼,但這是我發現解決此問題的唯一方法。 如果有人可以提供更好的解決方案,也將不勝感激。
謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.