2008/9/8 月曜日

携帯サイトで mailto の URLエンコードする時の注意点

カテゴリー: PHP, Web開発, 携帯サイト — nito @ 17:40:39

mailto で題名や本文に日本語などを含める時に URLエンコードをしないといけないが、URLエンコードすると逆に文字化けしたりして、よくわからなかったのでメモしておきます。

ファイルの文字コードは UTF-8 で記述しています。
URLエンコードをかけると DoCoMo、au だと日本語が文字化け。SoftBank は正常に表示される。
URLエンコードをかけないと日本語が正常に表示される(機種によっては文字化けする)。

mailto に半角英数字以外を含める時はURLエンコードしないといけないはずなのにかけると逆に文字化けしたりで混乱。
調べてみると
DoCoMo、au は shift_JIS に変換してから URLエンコード。
SoftBank は UTF-8 にしてから URLエンコード。
ということでなぜ文字化けしていたのかやっと理解。

取り合えず、php で文字コードを変換してURLエンコードする例を書いておきます。

DoCoMo, au
<a href="mailto:?subject=<?php echo urlencode(mb_convert_encoding('題名', 'sjis'));?>&amp;body=< ?php echo urlencode(mb_convert_encoding('本文', 'sjis'))?>">友達に知らせる</a>
SoftBank
<a href="mailto:?subject=<?php echo urlencode('題名');?>&amp;body=< ?php echo urlencode('本文')?>">友達に知らせる</a>

参考サイト

HTML convert time: 0.516 sec. Powered by WordPress ME