htmlのaタグのsrc要素に mailto:メールアドレス?subject=件名 と指定して、aタグで囲まれた部分をクリックすると、メールソフトの新規入力画面が立ち上がって、宛先と件名部分に、文字が入力された状態になります。
件名部分に2バイト文字(漢字など)を使用することが多いと思いますが、htmlをshift jisコードで作成しないと、2バイト文字部分の文字化けが発生します。
以下、一般に使われている文字コードで作られたhtmlファイルです。
Shift JIS | UTF-8 | EUC -JP |
システム的な制約や、多言語対応などで、Shift-JIS以外でhtmlを生成するケースで、mailtoのsubjectを2バイト文字で指定したい場合、どうするか?
私の場合、件名部分のみShift-JISコードに変換してURLエンコードしたものを、記述します。
以下のhtmlファイルが、「テストメール」という件名を、、それぞれShift JISコードで、URLエンコードしたものです。htmlの文字コードに左右されませんので、件名が文字化けしないと思います。
Shift JIS | UTF-8 | EUC-JP |
上記のソースコード部分は、以下のような記述となっています。
<a href="mailto:test@local.jp?subject=%83e%83X%83g%83%81%81%5B%83%8B">メールを送る</a>
”テストメール”という2バイト文字をShift JISコードでURLエンコードしたものが、%83e%83X%83g%83%81%81%5B%83%8B となります。
phpプログラムでURLエンコードするツールを作成しましたので、公開しておきます。ご自由にお使い下さい。
なお、メールアドレス収集ロボット対策として、メールアドレス部分を10進数のHTMLエンティティ化するようにしてあります。
IT工房にんにく庵関連ページ
・ ホームページ制作
URLエンコード使わせていただきました。ありがとうございました。
投稿者: keiko | 2012年03月16日 15:53