2015-06-08 17 views
0

我正在使用Java郵件API通過Imap從gmail檢索電子郵件,並在使用AngularJS支持的網頁中顯示它。如何解碼字符集中的文本並轉換爲Java中的另一個字符集?

當我使用javax.mail.Message.getContent()獲取電子郵件的數據時,返回帶有字符集的對象 - gb2312。

但是我的網頁使用UTF-8字符集,所以雖然我在網頁上面對一些奇怪的字符。

我需要從gb2312(或任何)字符集轉換爲utf-8才能在網頁中正確顯示。

任何人都可以幫忙嗎?

回答

1

您可以創建這樣一個新的字符串,並將其轉換爲UTF-8:

String s = new String(bytes, "OriginalCharset"); 
byte[] utfBytes = s.getBytes("UTF-8"); 

我認爲Java使用UTF-8本身,但最好明確地做到這一點。

+0

更好使用[StandardCharsets.UTF_8](https://docs.oracle.com/javase/8/docs/api/java/nio/charset/StandardCharsets.html#UTF_8),因爲它不需要捕捉任何異常,但我想你仍然必須趕上原始字符集。 – Raniz

+0

是的,但我不確定它是UTF8還是UTF_8,不想查找它。並注意你必須已經有了原始字節。 – Davio

+0

@Davio 我嘗試了上面的代碼,但它不工作,在下面的代碼什麼... '字符串mailContent =(字符串)emailContent; byte [] utfBytes = mailContent.getBytes(「UTF-8」); 字符串輸出=新字符串(utfBytes);' 字符集:GB2312 輸出: :阡艋幾究岸阱岸乃七充允允考耄7867己文崆上上岸樸寒荏峙盅I莓莓州莓莓社社,

相關問題