我遇到類似的問題described in this question:我正在使用「mailto」協議從Java打開默認郵件客戶端(我現在綁定到Java 5,所以可悲的是我不能使用Desktop API)。使用mailto時Outlook不處理多字節字符:
某些電子郵件包含日文文本。字符串已經被UTF-8編碼如下:
private void email(String to, String subject, String body)
{
String encodedSubject = URLEncoder.encode(subject, "UTF-8");
String encodedBody = URLEncoder.encode(body, "UTF-8");
String mailto = "mailto:" + to + "?subject=" + encodedSubject +
"&body=" + encodedBody;
String cmd = "cmd.exe /c start \"\" \"" + mailto + "\"";
Runtime.getRuntime().exec(cmd);
}
的日語字符正確編碼到其URL當量,所以 「平」 變成 「%E5%B9%B3」,例如;但是,當Outlook打開新郵件窗口時,三字節字符被解釋爲三個不同的字符 - 因此「%E5%B9%B3」被解釋爲「å¹³」。
我相當確信,問題在於前景,因爲以下HTML片段產生同樣的效果(SO似乎沒有允許的mailto標籤內,所以我不能提供直接鏈接,不好意思):
<html>
<body>
<a href="mailto:[email protected]?subject=%E5%b9%B3">click me to test!</a>
</body>
</html>
簡而言之,如何說服Outlook在從mailto鏈接中正確解釋多字節字符?
編輯:要回答Johannes的問題:我們有一個Java應用程序,在執行某些操作時發送電子郵件。每個電子郵件的標準文本都是從資源包中提取的,在大多數情況下,我們使用JavaMail API時沒有任何問題;但在這種情況下,用戶需要在發送之前定製電子郵件。
如果任何人都可以建議產生相同效果的非cmd.exe
方式(帶有主題和身體預填充的新郵件窗口) - 並記住我們與Java 5綁定,所以桌面API可悲地不是一種選擇 - 我會很開心!
不管這是一個問題,你是否因爲工作的客戶端或服務器端的mailto仍然需要由客戶解釋。在這裏看到我的類似問題:http://stackoverflow.com/questions/1472506/broken-accented-characters-in-a-mailto-link。恕我直言,它不能做到。 – AyexeM 2009-09-24 17:07:53