セイPHPこのクエリの基本的な意図が速い茶色のキツネは、のろまなイヌに飛びかかった文字列を保存するためにMySQLを伝えることは明らかである
INSERT INTO `some_table` ("foo") VALUES
('The quick brown fox jumps over the lazy dog');
のようなものは、MySQLにはいくつかのテキストが格納されて送信さデータベースに格納します。
PHPがUTF-8を使用するように設定されている場合、人が読める文字をバイナリに変換してMySQLに送信すると、UTF-8エンコーディングシステムを使用して文字が変換されます。
MySQLはUTF-8でエンコードされた文字を読み取ることができるので、デジタルでエンコードされたシーケンスが人間が読める文字でT
とh
とe
などを意味することは理解できません。
MySQLのは、それが文字列を受信したとき、それはハードディスクにデータを保存する前にlatin1の同等物へのUTF-8エンコーディングから文字を変換します、latin1の使用some_table
テーブルにデータを格納するように構成されている場合。
英語のアルファベット文字はUTF-8とLatin1の両方で表現できるため、この場合は問題ありません。
PHPの送信文字列に、Latin1ではなくUTF-8でしか表現できない文字が含まれていると問題が発生します。スマートな引用“
。 MySQLがスマート・クォート“
をデジタル形式に変換しようとすると、Latin1に文字通り、“
を表すデジタル・エンコーディングが定義されていないため、変換できません。
この状況に遭遇したときのMySQLの正確なエラー管理プロセスと、状況が回復可能かどうかはわかりませんが、最終的な結果は基礎となるエンコーディングが壊れて使用できなくなることです。
この問題は、2つのシステムで表現できない文字の場合にのみ発生します。すべての通信の99%に英語の文字が含まれていると、しばらくの間問題が発生していなくても、あなたが問題を通知したときに回復しようとすると、イライラする可能性があります。
最も多くの外国語。興味のある方はhttp://htmlpurifier.org/docs/enduser-utf8.html#whyutf8 – devpro