人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

http://www.tokitokurasu.jp/m/kaiin.html
携帯電話のauから、↑この画面にアクセスして登録ボタンを押すと画面が文字化けします。
しかし、解除ボタンを押すと文字化けしません。
アドレスを入れないで登録ボタン、解除ボタンを押した場合は同じエラー画面が表示されますが、登録側だと文字化けし、解除側だと
文字化けしないので、どこがおかしいのか分からずに困ってます。

どなたかお分かりになる方が居るようでしたら教えてください。


●質問者: and_sin
●カテゴリ:インターネット ウェブ制作
✍キーワード:au アクセス アドレス エラー ボタン
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● gami
●20ポイント

やってみましたが、文字化けしませんでした。

環境はFirefox3.0.7 + MacOSX10.5.6です。

◎質問者からの返答

携帯電話のauから確認してみてください。


2 ● gami
●20ポイント

失礼しました。

文字エンコーディングがEUC-JPになっているのに、メタタグではShift-Jisに指定されているようです。

このせいでは?

◎質問者からの返答

確かにそのようになってますが、解除画面では文字化けせず、登録画面では文字化けしてしまいます。


3 ● fut573
●20ポイント

コメントが付けられないので解答欄にて。

半角カタカナが悪さしているのかもしれません。

登録画面では半角カタカナが沢山使用されているようです。

解除画面ではカタカナが全て全角カタカナになっています。

半角カタカナは環境によっては文字化けします。

auのe-mailも駄目なはずです。

半角カタカナを全て全角カタカナに変換したら、解決するかもしれません。


4 ● gami
●20ポイント

>解除画面では文字化けせず、登録画面では文字化けしてしまいます。

自動文字コード判定が成功して、解除の方はEUC-JPと認識されているのではないでしょうか?

submitのラベル文字をともに[OK]にして、エラー画面表示での結果に差異がでるか確認してみてください。


5 ● りゅう
●20ポイント

とりあえず状況的にはこんな感じになっているようです。


・コンテンツ自体の文字コードはEUC-JP

・レスポンスヘッダでの文字コードの指定はEUC-JP

・HTMLのmeta要素での文字コードの指定はShift_JIS

・「解除」の方ではContent-Lengthが出力されておらず、chunkedエンコーディングになっている

・「登録」の方ではContent-Lengthが出力されている


文字化けが発生する原因のひとつとして、文字コードの誤認というのがあります。

ここからは完全な推測になりますが、コンテンツを一気に読み取れないchunkedエンコーディングではレスポンスヘッダでの文字コードの指定しか使わず、一気に読み取れる場合はHTMLのmeta要素での指定も使う(そっちの方が正しいものとして扱う)ということになっていれば、そういう現象が発生します。今回の場合、meta要素での指定が間違っている為、それが採用されてしまうと化けてしまう訳です。


こういう端末側の謎の仕様せいで変な挙動になる場合は、とりあえず仕様的に正しい状態にするのが一番です。

auだけではなくi-modeも視野に入れるとすると、文字コードはShift_JISでContent-Lengthを出力するようにするのがベターです。

以下のようにすれば意図通りに動作するようになると思います。

・CGIプログラムの出力をShift_JISに変換して出力するようにする

・Content-Typeに「text/html; charaset=Shift_JIS」を指定する

・Content-Lengthを出力するようにする

・htmlのmeta要素は削除する

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ