0
我在使用xlrd
和mysqldb
时在python中编码时遇到了麻烦。 我正在阅读一个包含其中的土耳其字符的excel文件。python mysqldb编码问题
当我打印像print sheet.cell(rownum,19).value
写入İstanbul
安慰,这是正确的数值。(Win7的龙力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
到数据库,因为它是。
MySQL + UTF-8 =噩梦 –
我同意但是这完全是关于MySQL吗? – brsbilgic
我不知道'xlrd'是什么,但我的猜测是这个问题出在MySQL的身上。如果有些更有知识的人今晚晚上回家时还没有回答你,也许我可以查看一些我的代码,并且实际上给出了某种答案。 –