0

Webアプリケーションのテスト中に興味深い問題が見つかりました。

ローカルホスト(Windows)とオンラインテストサーバー(Linux)にアプリケーションがあります。両方とも同じDBに接続されています(Linuxサーバー上)。Linuxサーバーにあるアプリケーションでフォームを介して1つのテキストフィールドを編集しようとすると、結果から発音区別符号が切り取られ、それなしでDBに保存されます。しかし、同じアクションを試したとき、locahost(Windows)で同じコードを使用すると、私が書いたとおりに発音区別符号を使用してテキスト全体が保存されます。

PHPの構成を確認しようとしましたが、両方のマシンでまったく同じ構成になっています。

誰かが、どの問題がそれを引き起こすのかを見つけるためにどこを見なければならないかについての考えを持っていますか?

4

3 に答える 3

1

Windows マシンの MySql インスタンスの 1 つ以上の文字設定が UTF8 に設定されていないようです。次のクエリを実行してみてください。

show variables like '%character%'

出力は character_encoding 関連のサーバー変数になり、データベース出力でそれを実行します。

character_set_client        utf8
character_set_connection    utf8
character_set_database    utf8
character_set_filesystem    binary
character_set_results      utf8
character_set_server        utf8
character_set_system        utf8
character_sets_dir        /usr/share/mysql/charsets/

私の最善の推測は、それらの1つ以上がlatin1に設定されていることです

また、照合を確認したい場合があります。つまり、これを実行します

show variables like '%collation%'

そして、あなたは次のようなものを得るでしょう:

collation_connection    utf8_general_ci
collation_database    utf8_general_ci
collation_server        utf8_general_ci
于 2009-05-31T13:19:14.253 に答える
0

両方のサーバーが同じエンコーディングでページを提供していますか?

Firefox でページにアクセスし、右クリックして [ページ情報を表示] をクリックします。Encoding のエントリがあります。これらを正しく転送するには、UTF-8 または同様のエンコーディングが必要です。

その後、データベースの設定を確認してください。UTF8 を使用するように MySQL 接続を設定する必要があり、テーブルと列も utf8 に設定する必要があります。

接続後に次のクエリを発行して、mysql 接続文字セットを設定できます。

SET NAMES 'utf8'
于 2009-05-31T11:56:23.687 に答える
0

そのフィールドで 1 つのフィルターを使用すると、異なるシステムで異なる動作をするという問題が見つかりました。

于 2009-07-24T09:25:50.970 に答える