はじめてモバイルサイトのフォームをつくってみたのですが、
Ezwebだと必ず文字化けして送信されてしまっていました。
いろいろ調べてみると、htmlのenctypeがmultipart/form-data の場合、
Ezwebは文字化けした文字列を受け取るようです。
ということは逆に、enctypeを指定しなければ
正しい文字列が受け取れるのか。。。
ということで試してみたら、本当にできました(苦笑)
原因は不明ですが、とりあえずできてよかったです。
以下、PEAR::Net_UserAgent_Mobileを使って
symfonyのテンプレート側でenctypeを切り分けるソースを備忘録として残しておきます。
< ?php if($objAgent->isEZweb()){ ?>
<form action=”editconfirm” method=”post” >
< ?php }else{ ?>
<form action=”editconfirm” method=”post” enctype=”multipart/form-data” >
< ?php } ?>
※一部全角にしてあります。
i-modeとEzweb、PCで文字化けしないことの確認はできました。
(softbankは確認してません(苦笑))
ちなみに文字コードは各キャリアごと
■docomo
Shift_JIS
■au
Shift_JIS
■softbank
UTF-8
■PC
UTF-8
にしています。
コメント
はじめまして。
enctype=”multipart/form-data” は、ファイルのアップロードフォームなどで使用するものなので、
携帯のフォームの場合にはそもそも必要ないので、キャリア判別も必要ないと思います。
http://jp2.php.net/manual/ja/features.file-upload.post-method.php
php5系の場合、enctypeが指定している場合にmbの入力文字列の変換が効かないので、inputで来た文字コードと、内部文字コードが違うため文字化けという状況になるのだと思います。
>maru_ccさん
ご教授ありがとうございます!
そもそもenctype=”multipart/form-data” はいらなかったのですね。。初歩的なところでお恥ずかしい限りです(汗
>php5系の場合、enctypeが指定している場合にmbの入力文字列の変換が効かない
この部分も知りませんでした、文字コードで悩むことが多いのでしっかり勉強していきたいと思います。。。
@yuccco この辺も参考になるかも
https://cafe-system.com/system274.html