Topホームページ  > 2009年10月27日

« 起動時、次のファイルが存在しないかまたは壊れているため、Windows を起動できませんでした | | 液晶パネルのバックライト切れ »

文字コードがS-JIS以外のHTMLで、mailto:の件名を文字化けさせずに指定する方法

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エンティティ化するようにしてあります。

mailto変換プログラム

ソースコード

 

 

IT工房にんにく庵関連ページ

 

ホームページ制作

コメント (1)
keiko:

URLエンコード使わせていただきました。ありがとうございました。

コメントを投稿

検索


Feed

Really Simple Syndication 2.0 The Atom Syndication Format Really Simple Discoverability