mailtoの件名や本文の文字化け対応(windows/mac)

仕事でお問い合せフォームを使う代わりに、メーラーを件名を決めうちで立ち上げる事で対応して欲しいという事があったので、よく知られているリンクに対してmailtoにsubjectを追記して対応したんですが、その際に文字化けしてちょっと手こずったのでメモ代わりにその対策を書いておきます。

制作環境はMacで、HTMLのエンコードはUTF-8です。
この環境下で以下のようにメーラーが立ち上がるようにした所、

<a href="mailto:mail@add.res?subject=件名">お問い合せ</a>

Macでは問題なくメーラーに件名が表示されましたが、Windowsで確認した所、件名が文字化けしてました。そこでコチラを使ってsubject部分をShift-JISにエンコードした所、今度はMacで文字化け。そりゃそうだ。

おそらくHTMLのエンコードをShift-JISで作成すれば問題ないでしょうが、既に公開済みのサイトで数十ページ全てを修正する訳には行かないので(したくないので)、以下のサイトに載っていた方法で対応してみました。

mailtoで件名を設定したときの文字化け対策 | アルペジオのように

自分の制作したサイトでもよくjQueryを使っているため、ほぼ同じように対応できましたが、IE(正確にはIE Tester)のみでリンク部分の表示テキストがリンク先(mailto〜)に変わってしまったので、条件分岐を以下のように変更しました。

【HTML】

<a href="mailto:mail@add.res?subject=Shift-JISの文字コード文字列" id="mlink">お問い合せ</a>

【JavaScript】

$(function() {
    var ua = navigator.userAgent.toUpperCase();
    if (ua.indexOf("MAC") >= 0) {
        $('a#mlink').get(0).href = '<a href='mailto:mail@add.res?subject=UTF-8の文字コード';
    }
});

簡単に説明するとデフォルト(HTML上)ではShift-JISで件名をメーラーに投げ、MacではUTF-8で件名をメーラーに投げるようにしています。

これでとりあえずMacでもWinでも文字化けが起きてないので、問題ないと思います。(たぶん)
というか今はmailto機能使ってる所も少ないですね。

「mailtoの件名や本文の文字化け対応(windows/mac)」への3件のフィードバック

  1. 環境によっては上記対応をしても文字化けったりするらしいです。(Windows7?)
    HTMLの文字コード自体をShift-JISにした方がいいらしいですが、それだけの為にShift-JISを使うのも何だかなぁという気がします。
    件名をなしにするか(日本語入力をやめるか)、フォームを使ったりするのがやはり良さそうですね。

  2. ピンバック: HTML/CSS | SanRin舎

コメントを残す

メールアドレスが公開されることはありません。