Java 〜 outlookで文字化けする
サーバー側(Java)でエンコードした文字列を、クライアント側(JavaScript)で受け取り、それをoutlookで表示する場合に文字化けが発生した。
調べてみると、機種依存文字が文字化けしていた。
サーバ側のエンコーディング処理は次。
return java.net.URLEncoder.encode(text, "Shift-JIS");
クライアント側でメールを起動するJavaScriptは次。
window.open('mailto:?cc='+address+'&subject='+subjValue+'&body='+text);
サーバ側でのエンコーディングがShift-JISになっていことが原因。
@ITのJavaの文字化け対策にも記載があるように、Windows環境で標準的に用いられている文字コードは、正確にいうと「Shift_JIS」ではなく、Shift_JISを拡張した「Windows-31J」と呼ばれるWindows標準文字セットであるからだ。