と を使用しているときに、Python でのエンコードに問題がxlrd
ありmysqldb
ます。トルコ語の文字を含む Excel ファイルを読み込んでいます。
そのような値を出力すると、コンソールにprint sheet.cell(rownum,19).value
書き込まİstanbul
れます。これは正しいです。(Win7 Lucida ConsoleLine、エンコーディングは `cp1254)
ただし、その値を次のようにデータベースに挿入したい場合
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を次のように変更すると
sql = "INSERT INTO city (name) VALUES('"+sheet.cell(rownum,19).value.encode('utf8')+"')"
値はエラーなしで挿入されますが、Ä°stanbul
İstanbul
値をそのままデータベースに入れる方法を教えてください。