0
xlrd
とmysqldb
を使用しているときに、私はPythonでエンコーディングに問題があります。 私はそれにトルコ文字を含むExcelファイルを読んでいます。mysqldbでのPythonエンコーディングの問題
私はそのprint sheet.cell(rownum,19).value
のような値を印刷するとき、それが正しいとする、コンソールにİstanbul
を書き込みます。(Win7のルシーダConsoleLine、エンコーディングは `cp1254ある)
しかし、私は
のようなデータベースにその値を挿入する場合私は としてSQLを変更した場合sql = "INSERT INTO city (name) VALUES('"+sheet.cell(rownum,19).value+"')"
cursor.execute (sql)
db.commit()
は
Traceback (most recent call last):
File "excel_employer.py", line 112, in <module> cursor.execute (sql_deneme)
File "C:\Python27\lib\site-packages\MySQLdb\cursors.py", line 157, in execute
query = query.encode(charset)
UnicodeEncodeError: 'latin-1' codec can't encode character u'\u0130' in position
41: ordinal not in range(256)
としてエラーが発生します
sql = "INSERT INTO city (name) VALUES('"+sheet.cell(rownum,19).value.encode('utf8')+"')"
値がエラーなしで挿入されているが、それはあなたが私にそれがあるとして、私は、データベースに値İstanbul
を置くことができますどのように任意のアイデアを与えることができる
İstanbul
になります。
MySQL + UTF-8 =ナイトメア –
私は同意しますが、これはMySQLに関するものですか? – brsbilgic
私は 'xlrd'が何であるか分かりませんが、私の推測によれば、問題はMySQLの側にあります。もし私が帰ってきたときにもっと知識のある人が今夜までにあなたに答えなかったら、私が持っているコードを調べて、実際に何らかの答えを与えることができます。 –