Ezweb(au)でモバイルサイトのフォームを送信する際に文字化けする件

はじめてモバイルサイトのフォームをつくってみたのですが、
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

にしています。

コメント

  1. maru_cc より:

    はじめまして。

    enctype=”multipart/form-data” は、ファイルのアップロードフォームなどで使用するものなので、
    携帯のフォームの場合にはそもそも必要ないので、キャリア判別も必要ないと思います。

    http://jp2.php.net/manual/ja/features.file-upload.post-method.php

    php5系の場合、enctypeが指定している場合にmbの入力文字列の変換が効かないので、inputで来た文字コードと、内部文字コードが違うため文字化けという状況になるのだと思います。

  2. cafemusic より:

    >maru_ccさん
    ご教授ありがとうございます!
    そもそもenctype=”multipart/form-data” はいらなかったのですね。。初歩的なところでお恥ずかしい限りです(汗

    >php5系の場合、enctypeが指定している場合にmbの入力文字列の変換が効かない
    この部分も知りませんでした、文字コードで悩むことが多いのでしっかり勉強していきたいと思います。。。

  3. さび より:

    @yuccco この辺も参考になるかも

    https://cafe-system.com/system274.html

タイトルとURLをコピーしました