我正在使用JavaMail處理電子郵件。主題是編碼字符集如下:如何在電子郵件主題中處理x-mac-ce編碼
Subject: =?x-mac-ce?Q?Wdro=BFenia_znaku_CE?=
如何使用JavaMail的解碼此。
我正在使用JavaMail處理電子郵件。主題是編碼字符集如下:如何在電子郵件主題中處理x-mac-ce編碼
Subject: =?x-mac-ce?Q?Wdro=BFenia_znaku_CE?=
如何使用JavaMail的解碼此。
Windows seems to usex-mac-ce
作爲Windows-1250
代碼頁(匹配CP1250 JDK字符集)的別名。
的JavaMail保持地圖「MIME到Java」字符集別名的內部,與 MimeUtility.javaCharset方法解決,處理這樣的情況。
遺憾的是,x-mac-ce
(至少從JavaMail 1.6.0開始)沒有mapping,並且(AFAIK)沒有提供擴展API來添加它。
所以,你可以在此刻做的最好的是主題行中的應用程序代碼進行解碼,這樣的:
MimeUtility.decodeText(
m.getSubject().replace("x-mac-ce","CP1250")
)
測試
m.setSubject("=?x-mac-ce?Q?Wdro=BFenia_znaku_CE?=");
System.out.printf(
MimeUtility.decodeText(
m.getSubject().replace("x-mac-ce","CP1250")
)
);
>>Wdrożenia znaku CE
注意
我第一次錯誤地將編碼標識爲Macintosh Central European encoding(x-MacCentralEurope
Java Charset),它不完全匹配CP1250,並且似乎是它的轉置版本(即, 0xBF匹配0xFB e.t.c.)。
顯然x-mac-ce是一個非標準的字符集。 JavaMail依賴於JDK來處理將字符集編碼轉換爲Unicode字符串。如上所述,如果x-mac-ce與CP1250字符集等價,JavaMail FAQ解釋how to use the JDK's facilities to map unknown charsets to known charsets。
是的,這是工作,但部分。主題被解碼,但沒有波蘭語字符。 –
@PiotrOlaszewski - 我想我現在已經能夠正確識別您的郵件的真正字符集。 – zeppelin
是的,更改爲cp1250後,字編碼正確。 –