2016-05-20 13 views
0

このトピックは完全に回答されていますが、私の問題は多種多様です。私は私のPythonコードと私のHTMLファイルでmysqldbに行う接続の両方でutf8デフォルトの文字セットとして設定しました。 InternalError(1267、 "'like'の操作のための照合(greek_general_ci、IMPLICIT)と(utf8_general_ci、COERCIBLE)の不正な組み合わせ)"

conn = pymysql.connect(host='myhost', port=3306, user='user1',passwd='******', db='mydb', charset='utf8') 

問題

はしかし来るに保管ので、私は私のdbレコードはすべて同じエンコーディングであるかどうかを確認しなければならなかった、そして、彼らはすべてのutf8です。
問題はHTML検索フォームにギリシャ語入力を挿入したときに表示されますが、空白入力のフォームの送信ボタンを押すと、ギリシャ語のレコードが正常に表示されます。私はまた、すべての受け入れ文字セット <head><meta>を私のhtmlファイルで利用しています。

<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> 
    <form accept-charset="UTF-8"> 
    </form> 
    </meta> 

フォーム入力がutf8であることを確認する方法はありますか?私はデータベースにはとても慣れていないので、どんな助けでも本当に感謝しています。

+0

あなたのテーブルは、phpMySqlのUTF8にも設定する必要があります – Louis

+0

ソースで ' 'は何をしていますか? –

+0

問題の原因となっているSQL文を表示できますか? 「

」は画像の外にあります。 –

答えて

0

CHARACTER SET utf8(またはutf8mb4)のΑΒΓΔは、桁数CE91 CE92 CE93 CE94です。 CHARACTER SET greekでは、それは16進数C1 C2 C3 C4です。

Pythonのテキストをダンプして、何を得るかを確認してください。保存されているものを見るためにMySQLのテーブルをダンプします:greekで、各文字は1バイトであることを

SELECT col, HEX(col) FROM ... 

注意。 utf8では、各文字は2バイトです(CExxのように)。

# -*- coding: utf-8 -*- 

More random python notes:Pythonのソース、ソースコード内の第1または第2のライン(コードUTF8エンコードにリテラルを持っている)で

for i, c in enumerate(u): 
    print i, '%04x' % ord(c), unicodedata.category(c), 
    print unicodedata.name(c) 

関連する問題