ラック
Home > ブログ > 記事 > 2014年12月 > mailtoについて

mailtoについて

カテゴリ: ホームページ, メール

mailtoで、subject(件名)とbody(本文)を指定できることは周知の通りで。

<a href="mailto:example@example.com?subject=タイトル&body=本文"></a>

こんな感じですね。mailtoを使う必要に迫られ、このような記述をしたのですが…。IEとFireFoxからWindowsLiveメール(2011、2012ともに)はちゃんと起動して、日本語の件名と日本語の本文が表示されました。これは意図した通り。

…しかし、Chrome(バージョンは39)でmailtoリンクをクリックすると…本文だけ文字化けする。なおhtmlファイルはUTF-8BOMなしで、metaタグのchar-setもutf-8と記述。

…で、色々実験した結果、mailtoのsubjectとbodyをshift-jisエンコードしたものだと(htmlファイルはutf-8でmetaタグもutf-8のまま)Chromeで文字化けせずに動いた。が、FireFoxでメールソフトが起動しないという…。

仕方ないのでこれはユーザーエージェント判定して、Chromeのときだけshift-jisエンコードしたものにmailtoの中身をjavascript&jQueryで行わせたらIE,FireFox,Chromeそれぞれちゃんと文字化けせずに立ち上がるようになったので大丈夫そうです。

 

しかし問題がもう1つ。

Android4.2系のChrome(バージョンはやっぱり39)から機種固有のメールソフトを起動すると半角スペースが「+」マークに置き換わるというこれまた怪現象。しかもjavascriptのエンコード関数(試したのはescapeとencodeURI)に入れても、予め%20にしても「+」になるという性質の悪さ。javascriptもutf-8BOMなし形式で保存してます…が。
なお、Androidの標準ブラウザから同じメールソフトを起動すると半角スペースのまま入る。ということはChrome側に問題がありそう。

Chrome、ブラウザどちらでも、Gmailを起動するとこっちはちゃんと半角スペースになってる。

…どちらもChrome経由でメールソフトを立ち上げたときに問題が出る、というのがきっかけになったのでChromeさんしっかりしてください…orz、と思わず凹みました。

P.S.

解決したっぽい

タグ: jQuery, html

 



関連する記事一覧