2017-09-25 11 views
0

utf8でエンコードされたデータをmysqlデータベースに挿入しようとしています。特殊文字はブラウザに正しく表示されますが、データベースには表示されません。照合順序を手動でutf8_unicode_ciに変更し、「この操作でデータを新しい照合順序に変換しようとする」ことを確認した後、データが正しく表示されます。私はSQL照合が機能しない

CREATE TABLE IF NOT EXISTS table_name (
    date date NOT NULL, 
    searchengine VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, 
    location VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, 
    keyword VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, 
    position INT NOT NULL, 
    competition VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, 
    url VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL  
) 

を使用してテーブルを作成し、テーブルを作成した後にデータを挿入する場合は、データがまだcolletionはutf8_unicode_ci内であっても、正しく表示されません。どのようにこれを修正するための任意のアイデア?

+0

回答に必要な情報を提供していない - 疑問符が表示されていますか?こんにちは?切り詰められたテキスト?何?いずれにせよ、これを参照して問題を解決してください:http://stackoverflow.com/questions/38363566/trouble-with-utf8-characters-what-i-see-is-not-what-i-stored –

答えて

1

照合は、文字列の比較およびソート方法を定義する一連のルールです。 MySQLの各照合は1つの文字セットに属します。すべての文字セットには少なくとも1つの照合があり、ほとんどの照合には2つ以上の照合があります。照合は、重みに基づいて文字を並べ替えます。

utf8mb4_unicode_ciは、並べ替えと比較のためのUnicode標準に基づいており、非常に幅広い言語で正確に並べ替えられます。

+0

手作業でデータを挿入した後のphpmyadminのutf8mb4_unicode_ciへの照合は正常に動作します。データは正しく変換されます。ただし、上記のコードのようにテーブルを作成し、その後にデータを挿入するときは、照合をutf8mb4_unicode_ciに設定すると機能しません。データは変換されません。 – erlDan

+0

https://dev.mysql.com/doc/refman/5.5/en/charset-unicode-conversion.html –

+0

utf8mb4の代わりにutf8を使用する必要があると思います。上記のコメントのリンクを確認してください。 –