我有一个脚本可以解析txt文件中的数据(我认为是utf8),然后它应该将其写入mysql。 当我做类似的事情时:
cur.execute("insert into keywords (keyword) values ('%s')" % (u'RUSSIAN TEXT HERE'))
它做得很好(我的 mysqldb 中有俄语字符串),但是当我
f = open('/Users/aaaa/Desktop/keywords.txt', 'rw+')
for x in range (14028):
a = f.readline(x)
cur.execute("insert into keywords (keyword) values ('%s')" % (a))
#or that
cur.execute("insert into keywords (keyword) values ('%s')" % (unicode(a)))
然后我明白了
'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)
我的mysql中有这个
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/local/mysql-5.6.20-osx10.8-x86_64/share/charsets/
偶尔,我会将符号写入数据库,但俄语符号就像方 block 之类的东西。
我该怎么办?
另外,我在 repr(a) 之后得到了这个
''
'0'
'5 '
'ru '
'\xd0\xbc\xd0\xb0'
'\xd1\x85\xd0\xb0\xd1'
Traceback (most recent call last):
最佳答案
尝试以这种方式打开文件:
f = open('/Users/aaaa/Desktop/keywords.txt', 'rw+', 编码='utf-8')
关于python - 用python将西里尔字母写入mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26660585/