1

スタック オーバーフローに関する同様の質問をいくつか経験しましたが、いずれも結果が得られませんでした。私の単純なフォームでは、人々が次のような文字列を投稿できるようにしたい"Pagé Caiçara"

私のhtmlヘッドをチェックすると、次のメタがあります:<meta charset="UTF-8">

私のフォームタグ

<form id="contato-form" action="some_file.php" method='POST' accept-charset='UTF-8'>

また、utf エンコーディングを強制する隠し入力もあります。

<input name="utf8" type="hidden" value="&#x2713;" />

しかし、「PagéCaiçara」を送信しようとすると、それらのどれも機能しないようで、$_POST をチェックすると、次のようになります。

echo print_r($_POST);

出力:

配列 ( [名前] => Pagé Caiçara [empresa] => 会社 [電子メール] => my@mail.com.br [サイト] => nenhum.com.br [電話] => 12 55558349 [mensagem] => águia de água [utf8] => âœ" ) 1

じゃあ…次は何を試せばいいの?前もって感謝します。

4

1 に答える 1

2

あなたの質問への答えは、あなたがその出力を使用する状況によって異なります:

  1. PHPで処理し、結果を返す/htmlページを印刷する

    指定されたデータを処理し、結果をhtmlページに印刷すると<meta charset="utf-8">、出力が正しく表示されます。

  2. PHPで処理し、プレーンテキストとして印刷します

    print_r()スクリプトの先頭に次の行を追加するような単純な出力を印刷する場合は、次のようにします。header('Content-Type: text/plain; charset=utf-8');

  3. PHPで処理し、データベースに書き込みます

    データベース/テーブルの文字セットと照合を正しい値(utf-8)に設定した場合、結果はデー​​タベースに正しく挿入されます(DBで操作する前に、これらの行を実行してください)。

mysql_query("SET NAMES 'utf8'", $db_link);

mysql_query("SET CHARACTER SET utf8", $db_link);

mysql_query("SET CHARACTER_SET_CONNECTION=utf8", $db_link);

于 2013-02-07T14:44:42.147 に答える