ホームページ >バックエンド開発 >PHPチュートリアル >フォームを送信すると、$_post[XX]で取得したデータが文字化けしてしまいます。

フォームを送信すると、$_post[XX]で取得したデータが文字化けしてしまいます。

WBOY
WBOYオリジナル
2016-06-23 14:09:351144ブラウズ

問題が発生した後、オンラインの格言
に従って、index.php の前に を追加しました。フォームが送信されます)
page-1.php (取得されるページ) に
header("Content-Type:text/html;charset=GB2312");
$key=$_POST['key'] =iconv("UTF- 8","gb2312",$_POST["key"]);
結果はまだ機能しません。私は初心者ですが、問題が解決する限り、お気軽に意見を述べてください。


ディスカッションへの返信 (解決策)

データはページまたはファイルに入力されていますか?

データはページまたはファイルに入力されていますか?
フォームを送信して入力してください!


header("Content-Type:text/html;charset=GB2312"); を追加します

さらに、php ファイルを gbk エンコードに設定します

Index.php 1 行目に
ヘッダを追加します ("Content-Type : text/html; charset=GB2312");

さらに、php ファイルを gbk エンコーディングに設定します
聞いてください、 header("Content-Type: text/html; charset=GB2312") ;
そしてこの "< meta http-equiv="Content-Type" content="text/html; charset=GB2312" />"

header() 関数は、元の HTTP ヘッダーをクライアントに送信します。
要素は、ページに関するメタ情報を提供できます

メタの概要を一度に説明することはできません。以下の概要を読んでください
http://www.w3school.com.cn/tags/tag_meta。 asp

Index.php (フォームを送信するページ) の前に を追加します
このメタが有効になる場合, 送信されたフォームは GB2312 でエンコードされています
そこで、page-1.php (取得するページ) 内に
$key=$_POST['key']=iconv("UTF-8","gb2312",$_POST[ 「キー」] );
は間違っています!
GB2312 を UTF-8 として扱うにはどうすれば正しい結果が得られますか?

header("Content-Type:text/html;charset=GB2312");
は http プロトコル ヘッダーにあり、その優先度は

Index.php の前に を追加します。
このメタが有効であれば、送信されたフォームは GB2312 でエンコードされます
そのため、page-1.php (取得するページ) 内で
$key=$_POST['key']=iconv(" UTF-8"," gb2312",$_POST["key"]);
は間違っています!
GB2312 を UTF-8 として扱うにはどうすれば正しい結果が得られますか?

header("Content-Type:text/html;charset=GB2312");
は http プロトコル ヘッダーにあり、その優先度は

index.phpのエンコード方式がgb2312なので、header("Content-Type:text/html;charset=GB2312");を追加します
はい、このように変更しましたが、この点では難しすぎると感じています。

結果はまだうまくいかない、同じです...

「まだうまくいかない」「まだ同じ」とはどういう意味ですか
どのような「違う」とどのような「同じ」ですか

結果はまだ機能しません、同じです...

「まだ機能しない」と「まだ同じ」とはどういう意味ですか
「機能しない」とは正確には何ですか、「機能しない」とは何ですか?同じです」

つまり、$_post で取得した変数データは依然として文字化けしています (別途出力しました)
バージョン 主よ、気にしないでください。私のことについては好きに言っても構いませんが、怒らないでください。あなたの体はあなたのものです。もともとコンピュータはすべてその生命力を無駄にしていました。

フォームページのHTMLソースコードを投稿します

贴出表单页 html 源代码


header("Content-Type:text/html;charset=GB2312");
$link=mysql_connect("localhost","root","qidian110");
$key=$_POST['key'];
mysql_select_db("books",$link);
$query="SELECT * FROM book WHERE title='$key' or type='$key' or author='$key'";
$result=mysql_query($query);
echo "$key";
echo "








";

while($row = mysql_fetch_array($result))
  {
  echo "";
  echo "";
  echo "";
  echo "";
  echo "";
      echo "";
  }
?>

上面的是page-1.php。
下面是index.php















  
  

  

搜索


  

   






header("Content-Type:text/html;charset=GB2312") );
print_r($_POST); を追加

page-1.php を header("Content-Type:text/html;charset=GB2312") に追加
print_r( $_POST の下);
結果を投稿します
配列 ([use] => [pass] => [key] => ??????)


下の図に示すように:

あなたについて教えてください 撮ってみましょう環境を見てみましょう
さらに、テストに使用されたブラウザと、他のブラウザでどのような条件がテストされたか。

あなたの環境について教えてください
さらに、テストに使用されたブラウザと、他のブラウザでテストされた条件も教えてください。

apache+php+mysql

IE 9 と Baidu ブラウザを使用してください

header() の前に出力はありません


header() の前に出力はありません

あなたの環境について教えてください

さらに、どのブラウザを使用していますか? 他のブラウザでテストするとどうなりますか?

フォームページのHTMLソースコードを投稿してください



皆さんに迷惑をかけて申し訳ありませんが、昨日、すべてのエンコーディングメソッドを「UTF-8」に変更しました(MySQLがテーブルを作成するときはUTF-8であるため)。お願いします。今後は各ページのエンコード方法にぜひ注目していきたいと思います。

それを解決し、それが何なのか、なぜそうなのかを知り、自分で要約してください

実際、すべての送信プロセスでは、コードを書くためにエディターで php ファイルを開いて、その前後のエンコードの問題を考慮する必要があります。この考え方によれば、各転送プロセスを自分でリスト化し、問題を確認するのが簡単になります

優れたエディタを使用することも重要です。

notepad++ をお勧めします。エンコーディングを変更するのに非常に便利だと思います。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
编号 书名 语言 作者 剩余数量
".$row['b_id']."".$row['title']."".$row['type']."".$row['author']."".$row['number']."