ケータイフォームの文字入力指定

2008/03/14 | ケータイ

フォームの<input type=”text” />タグの入力方法で、PCの場合はスタイルシートを指定することでIMEを無効にすることができる。

style=”ime-mode:disabled;”

しかし携帯では当然のことながら上記の記述ではNGだ。スタイルシートが使えないからだ。しかし拡張属性があって、以下のように記述すれば指定ができる。

○全角(デフォルト)
istyle = 1
mode = hiragana

○半角カナ
istyle = 2
mode = hankakukana

○英字
istyle = 3
mode = alphabet

○数字
istyle = 4
mode = numeric

istyle属性はドコモとAUで、mode属性はソフトバンクで。両方で対応させたい場合は二つの属性を併記しておけばいい。

携帯からのフォーム送信・・・

2008/02/13 | ケータイ

この前「ソフトバンクではフォームの送信が必ずUTFで送られる」みたいな記事を書いた。ものすごく気になっていたので、別途チェック専用のプログラムを書いて再度試してみた。

結果・・・。

嘘を書いていたことが判明しました。失礼しました。

プログラムの内容はたいしたことないが、設定すべき項目は全部書いておいた。

○プログラム中には
mb_language(‘Japanese’);
mb_internal_encoding(‘UTF-8′);
mb_http_input(‘pass’);
mb_http_output(‘SJIS-win’);
ob_start(‘mb_output_handler’);
ini_set(‘default_charset’,’SJIS’);

○.htaccessに
php_flag mbstring.encoding_translation 0

これで、フォーム(SJIS)から文字を送信したらSJISの文字が送られてきた・・・。やっぱそうだよね・・・。

ちなみにmb_internal_encoding(‘UTF-8′)と書くところを’SJIS’として、シフトJISでPHPファイルを書けば・・・というのはNG。たいていの場合PHPはzend multibyteが有効な状態になっていない。本来PHPはシフトJISで記述してはいけない言語だから。

たぶん・・・今でもそのはず。

でもいまだにシフトJISで書く人が後を絶たない。PHPのMLでも「シフトJISはダメ」と喚起する人もほとんどいない。大丈夫になったりしてるのかな?。識者のご意見を求めます。

携帯のフォームのことで

2008/02/08 | ケータイ

最近時々ケータイの仕事をさせていただく機会が出てきた。基本的にコーディングはやらない(サーバサイドのプログラムしか書かない)ので、絵文字関連の処理がなければ、今のところそれほど悩むことはない。

そう思っていたらいくつか入力フォーム関係で、PCの時には遭遇しなかった問題に出くわしたのでメモ。

○submitボタンが押せない
一部の機種で「submitボタンが押せない」とか「フォーム自体が表示されない」とかっていう症状が出た。一部の機種でできないのか、それとも一部の機種のみができたのかはわからないけれど・・・。
どうやら原因はformタグ内でactionを指定していなかったことだった。IEとかだとaction指定がない場合は同一URLにpostなりgetなりしてくれるのだが・・・。プログラムを書く上でめったに省略などしないが、たまたまそういうことをしたらこういう結果に。action属性を指定することで無事解決。

○auだけフォームが表示されない
auだけだめ。フォームの部分がまるまる表示されない。調べてみたところauはかなりシビアなコーディングが必要とのこと。HTML自体はお客さんからいただいたものだったが、tableコーディングされていたものだった。結局table関連タグをすべて削除して、フォームの部分のコーディングをシンプルにしたら無事表示された。

まだまだ修行が足らない、か・・・。

携帯絵文字自動変換

2008/02/05 | ケータイ

携帯キャリア別とPC用に絵文字を相互変換してくれるライブラリを作っている人がいた。すごーい。

http://php-develop.org/MobilePictogramConverter/

でも使い方が・・・と思ったらサンプルもついてた。すごーい。
これは結構有用な気がするので、メモ。

ソフトバンク携帯からのフォーム送信

2008/02/04 | ケータイ

ちょっと驚いた発見があった。もともと携帯向けの開発なんてしていなかったからかもしれないけれど・・・。
最近携帯をソフトバンクに変えたのだが、その端末からウェブフォームで入力値を送信するのだがどうしても文字化けする。以前のドコモ端末では問題なかったのに・・・。

基本的に携帯のサイトは出力がSJISなわけで、フォームから送られてくるデータもSJISだと思っている(思っていた)。プログラム内部では、
 mb_http_input(‘pass’);
の宣言をいれ、手動で内部encodingに変換していた(mb_internal_encoding)。

で、POSTされた文字列をdetect_encodingして調べてみた。

 UTF-8

えぇぇぇ。ソフトバンク携帯ってデータを常にUTF-8で送信するの?。前からこんな仕様だった?。HTMLフォームの文字コードと同じ文字コードで送信してくれるのではないの?。

まだ十分調べたわけではないけれど・・・。
まぁ、ブラウザから送られてくるデータの文字コードなんてそもそもアテにならないけれど・・・。久々に<input type=”hidden” name=”encodeChecker” value=”美乳” />みたいなコードを書いてしまった(もちろんこの値を元にmb_convert_encodingするため)。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net