首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python从MySQL读取西里尔文utf-8符号时出错

使用Python从MySQL读取西里尔文utf-8符号时出错
EN

Stack Overflow用户
提问于 2012-12-06 00:16:47
回答 1查看 1.1K关注 0票数 1

这是我的代码,它连接到数据库,并将俄语单词插入数据库:

代码语言:javascript
复制
import mysql.connector

    if __name__ == '__main__':
        try:
            cnx = mysql.connector.connect(user='user', password='password',
                                      host='123.123.123.123',
                                      database='db_name',
                                      charset='utf8',
                                      collation='utf8_general_ci',
                                      use_unicode=True)
        except BaseException as ex: 
            print('Error: ' + str(ex))
            cnx.close()
        else:
            print('Connections succesful!')
            cnx.set_charset_collation('utf8', 'utf8_general_ci')
            cursor = cnx.cursor()
    print(cnx.charset)
    cursor.execute("INSERT INTO table_name (column_name) values ('привет!')") #means 'Hello!' in russian
    cursor.execute("SELECT * FROM test_referers")
    print(cursor.fetchall())

下面是我得到的结果:

代码语言:javascript
复制
Connection succesful!
utf8
(1, u'\u043f\u0440\u0438\u0432\u0435\u0442!')

这样的输出出现在Python解释器控制台和Eclipse PyDev中。

热心的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-06 00:22:03

您的输出是有效的Unicode。Python使用Unicode转义值(\uxxxx)将其返回给您,因为行由具有两个项的元组组成;当打印元组时,它的内容被表示为python文字。

如果您使用以下代码:

代码语言:javascript
复制
print(cursor.fetchall()[1])

相反,它将打印:

代码语言:javascript
复制
привет!

您可以通过在python提示符下打印文字值来测试这一点:

代码语言:javascript
复制
>>> print u'\u043f\u0440\u0438\u0432\u0435\u0442!'
привет!
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13727595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档