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

PHPにてプログラムを製作しております。

フォームからpostしたデータに
半角カタカナが含まれると?になったり、
文字が消えたりします。

解決方法を教えてください。


設定は下記の通りです。
Windows 2003 server
IIS 6.0
PHP Version 5.2.3

output_buffering = no value
magic_quotes_gpc = On
default_charset = "Shift_JIS"
extension=php_mbstring.dll
mbstring.language = neutral
mbstring.internal_encoding = SJIS
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = no value

●質問者: ebagos
●カテゴリ:インターネット ウェブ制作
✍キーワード:DLL IIS ON PHP Shift_JIS
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● t_shiono
●27ポイント

もう少し具体的に症状を教えてもらえますか?

データが壊れるとのことですが、それはどのように確認されていますか?例えば、

・フォームデータをそのままページに出力したところ、何も表示されなかった

・フォームデータをファイルに書き出してみたところ、何も書き込まれていなかった

・フォームデータをDBに格納したところ、DB内の文字列が空だった

・フォームデータをDBに格納し、DBから読み取ったデータを表示するページで見ると、何も表示されなかった


といった辺りが想像されます。

それによって考えられる部分が変わりますが、


これだけではなんなので、magic_quotes_gpcをOFFにすると、どうなりますか?

◎質問者からの返答

・フォームデータをそのままページに出力したところ、何も表示されなかった

になります。

magic_quotes_gpcをOFFにしても、同じでした。

よろしく、お願いいたします。


2 ● Yota
●27ポイント

このようなテストスクリプトを実行してしても半角カタカナが変換もしくは消滅しますか。

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"/>

</head>

<body>

<form method="POST">

<div>

<input type="text" name="inp1" />

<input type="submit" name="inp2"/>

</div>

</form>

<?php

mb_internal_encoding('SJIS' ) ;

mb_http_input('SJIS') ;

mb_http_output('SJIS') ;

if(isset($_POST['inp2'])) echo $_POST['inp1'] ;

?>

</body>

</html>

◎質問者からの返答

ご回答ありがとうございます。

半角カタカナもですが、半角でなくても、なにも、表示されませんでした。


3 ● t_shiono
●26ポイント

表示しているブラウザで文字コードを指定しても何もでませんか?

UTF-8で出力していても、ブラウザの自動判別が適切に機能しておらずShift_JISとして表示したりすると、何も表示されないことがあります。

それでもだめであれば、

print_r ($_POST);

とかしては何が表示されますか?

◎質問者からの返答

ご回答ありがとうございます。

下記のような感じで表示されました。

ryo_nameが半角カタカナで入力した箇所です。

Array ( [ryo_loginid] => 07251 [ryo_password] => 658451 [ryo_name] => ? [ryo_stayear] => 2005 [ryo_endyear] => 2012 [ryo_id] => 36 [form_ste] => kakunin [Submit] => )

よろしく、お願い致します。


4 ● えるふん
●10ポイント

mbstring.language = neutralの値をJapaneseにする

今回あまり関係ないと思いますが日本語限定ならお勧めします)

mbstringの設定から自動変換系の設定を行わない

自分で文字エンコードを確認しながら適切に変換を行う(自動変換はえてして誤認識をします)

をはずす.

どうしても自動変換するならmbstring.detect_order = autoは適切な値にする

autoの判断基準と件のページの基準が一致しない場合,誤変換としての精度が高まると思われます.

無駄な出力変換を除去する

HTMLコンテンツをそもそもShift_JISで生成しているなら下記はまったく必要ありません(むしろ意図しない文字変換が行われる可能性があります)

参考まで:

http://blog.poyo.jp/id-1147328204

関連質問


●質問をもっと探す●



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