2011-11-17 1 views
1

私はCakePHPを使用しています。 私は持っています:中国語の文字をフォームに送信すると間違って表示される - UTF8エンコーディング全体で使用される

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />が私のテンプレートに設定されています。

Configure::write('App.encoding', 'UTF-8');が設定されています。 。

私のデータベースは database.php - (encoding=>'utf8')に(、 utf-8エンコーディングを使用していると私は手動でそれらが正しく保存されている中国語の文字を入力する場合

、と私は何の問題もなく出力、それらをすることができます

このスクリーンショットは出力を示しています。

http://i.stack.imgur.com/P04iz.jpg

ナンバー1は、(utf8_unicode_ciを使用して)私は手動で私のMySQLデータベースにで中国語の文字を貼り付けた結果である。

4と5は私のフォームから中国語の文字を投稿するときに起こることです - わかりにくいばかげています。

<form action="/controller/add" accept-charset="utf-8" id="ControllerAddForm" method="post">

ので、utf-8文字を受け入れなければならない:

フォーム符号化があります。私はそれらを入力することができます。彼らはテキストボックスに大丈夫と表示されますが、私が提出したものはひどく乱されてしまいます。

アイデア?

+0

ユーザーに渡されたヘッダをチェックすると、Firefoxで放火犯は何を言ってんを使用しています... UTF-8互換の文字ではありません(それはhtml/textエンコーディングutf8?):あなたのファイルはbomなしでutf8として保存されていますか? – mark

+2

ちょうどいくつかの考え - DBに挿入される前にPOSTedフォームのデータはOKですか?もしそうなら、mysqlプロンプトから手動でSELECTクエリを実行するだけでなく、Cake経由でfind()を実行するときにデータが変更されますか?また、database.phpでUTF8を設定しても、データベースがUTF8であるとは限りません。デフォルトのcharsetを確認するには、SHOW CREATE TABLE table_nameを実行します。ありがとうございます; – Brian

答えて

0

また、database.phpにデータベース接続をUTF-8に設定しましたか?マークのような

'encoding' => 'utf8' // no hyphen 
+0

;私はこれをすでに定位置に置いており、それをもっと明確にするために修正するでしょう。二重チェックしました。問題は残っています。 – Ross

0

とブライアンは、あなたのPOSTヘッダーでたAccept-エンコーディングパラメータをチェックして、データベースキャラクターがを設定し、言った:

はMySQLの場合、それは次のようになります。

関連する問題