2011-01-13 9 views
1

、私は正しいUTF文字として一部の文字を参照してくださいよ、それはそれで、UTF-8エンコードされた文字だ、それは同じOKフォーム(á)と間違ったUTF文字だです、しかしutf-8文字を混乱させる(例えば、ýとして表示)。奇妙なUTF-8 MAMPの問題

したがって、MAMP上で実行されているCMSがあります。これは、クライアント向けにローカルに開発されたウェブサイトです。現在、管理では、正しいutf-8文字を入力します。 localhostでブラウズすると、正しいutf-8文字で表示されます。しかし、utf-8でコード化されたmysqlでは、utf-8文字が不正である(Sequel Pro/phpMyAdminで)。

データベースがステージング/ devサーバーに移動されたとき、MAMPで動作するのと全く同じDBがMAMPで入力されたのと同じように動作を停止し、正しく表示されませんでした。

しかし、ステージングサーバーで管理(まったく同じコード)を開いて正しい文字を入力すると、正常に表示されるだけでなく、正しい文字としてmysqlに保存されます。

私は実際にはショックを受けています。まったく同じコードであり、非常に同じデータベースで、それはまだ別のやり方で動作します。

あなたは何かに気付いたことがありますか?つまり、utf-8が混乱する可能性のある何百万もの異なるエントリーポイントを見て苦痛を感じることがありますか?

P .:私はこれが厳密にはアプリ関連ではなく、MAMP関連の(奇妙なutf-8設定)かもしれないと思う。 P.S.:アプリケーションはMySQLiを使用していますが、すべてのファイルはUTF-8でエンコードされています:/唯一の違いは、mampではホスト/ユーザmysql接続のみを使用し、dbソケットはステージングします。

ありがとうございます。

+1

サーバーとクライアントの既定のエンコード設定を見てください。たとえば、データベースに接続した後、 'SET NAMES utf8'を実行して、実行時にクライアントのエンコーディングを設定することができます。 – Fanis

答えて

3

私は実際にこれを数回経験しました。私はそれを回避するために次のことを行います。できるだけ早く私は、データベースに接続するよう

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

各ページの上部に:

header('Content-Type: text/html; charset=utf-8'); 

あなたがデータをポストするために使用する任意のフォームで、本当に杓子定規になりたい場合は:

<form accept-charset="utf-8"></form> 
+0

うん、それは(あなたがちょっと早く書いたのなら:) –

+0

うれしい –