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

PHPで、文字コードをシフトJISでプログラムを組んでいるのですが、フォームから「製造」という文字の前後に英字があるテキストをPOSTすると英字以外が消えてしまいます。

例:
ABC製造→ABC
XYZ製造ファイル→XYZ
製造(A)→(A)

英字ではなく日本語だと問題なくPOSTされます。

例:
あいうえお製造→あいうえお製造

対処法をご存知の方がおられましたら教えて下さい。

ちなみにシフトJISでよく問題になる「能」「表」等を含むテキストは問題なくPOSTされます。

●質問者: petrichor
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:ABC PHP XYZ あいうえお シフトJIS
○ 状態 :終了
└ 回答数 : 2/3件

▽最新の回答へ

1 ● Yota
●35ポイント

こういうスクリプトを作ってそちらの環境で試してください。

文字が落ちますか。

<html>

<body>

mb_internal_encoding('SJIS') ;

if(isset($_POST['str']))echo $_POST['str'] ;

?>

<form method="POST">

<input type="text" name="str">

<input type="submit">

</form>

</body>

</html>

◎質問者からの返答

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

試してしましたら、文字化けしてしまいました。

試しに

if(isset($_POST['str']))echo mb_convert_encoding($_POST['str'], "SJIS", "auto");

としてみると、やっぱり文字が消えてしまいます。


2 ● yoccola
●35ポイント

勘ですが

ABC製造⇒UTF-8

あいうえお製造⇒Shift-JIS

という風に文字コードを自動認識してしまうのではないでしょうか?

実行ファイルのトップ、

もしくはファイルのトップでincludeしているファイルの中で

header('Content-Type: text/html; charset=Shift-JIS');

を記述して見てください。

◎質問者からの返答

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

これは元々のファイルに入れていたのですがテスト用に入れるの忘れてました。

一応テスト用にも入れてみましたがダメでした。

で、思いついて試しに$str=mb_convert_encoding($str, "SJIS", "auto");を$str=mb_convert_encoding($str, "SJIS", "EUC-JP");にしてみたら、解決しました!

関連質問


●質問をもっと探す●



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