HTMLの特殊文字はまじめに書きましょう。

現在開発中のWebサイトはCakePHPで開発しています。今回は、PCと携帯電話の両方をサポートしています。どちらもコントローラーとアクションは共通でビューだけが異なります。携帯かどうかの判定をして、携帯電話であったらm_*.ctpという名前のビューを取り込むようにしています。

携帯電話の場合の文字コードは、基本的にシフトJISになります。通常はPHP、HTML、DBはUTF-8にしていますので、表示するときに強制的にシフトJISに文字コードを変換して、英数字カタカナを1バイト文字に変換してしまいます。この辺りはレイアウトに処理を書いておけばCakePHPだと簡単です。

ここから本題です。失敗したこと。

携帯電話の画面で矢印の代わりに<と>を使っていました。<>は2バイトコードです。例えば

<前へ 後ろへ>

のようにリンクを設定します。

しかし、お察しのとおり携帯電話のブラウザだとおかしなコードが表示されてしまいます。つまり<>がHTMLタグの始まりと終わりになって認識されてしまいます。

解決方法は簡単です。面倒がらずにHTMLの特殊文字でまじめに指定することです。<は<>は>です。これで正しく表示できます。

やはり基本は大事です。