0

シナリオ: 製品の詳細を編集するために使用される html ドキュメントは ISO-8859-1 としてエンコードされ、POST データを PHP ファイル (これも ISO-8859-1 でエンコードされています) に送信します。その PHP ファイルには、入力をクリーニングする mysql_real_escape_string 関数があります。データベース/mysql サーバーの文字セットは UTF-8 です。問題は、POST 文字列にスカンジナビア文字 (ä、ö、å) が含まれている場合、mysql_real_escape_string が空の文字列を返すことです。

utf8_encode/decode でオーバーライドしようとしましたが、うまくいきません。

ここで、html&php ファイルを UTF-8 を使用するように変更すると、保存は (予想どおり) 正常に機能しますが、以前に保存されたすべての製品データが破損しているように見え、何千もの製品行が存在します。

それを修正する最も簡単な解決策は何ですか?データベースの文字セットを変更しますか? エンコーディング関数を実行して、データベース内のエントリを変換しますか?

4

1 に答える 1

1

mysql_real_escape_string は、現在の接続文字セットを考慮します。mysql_real_escape_string を呼び出す前に接続を明示的に UTF-8 に設定すると、ISO-8859-1 スクリプトが機能するはずです (mysql_real_escape_string を使用する前に "SET NAMES 'utf8'" をクエリします)。

しかし、可能な限り Unicode (および Unicode のみ) を使用することを常にお勧めします;)

于 2013-06-13T13:09:20.557 に答える