1

これが私のコードです。これはデータベースに接続し、ロシア語の単語をデータベースに挿入します。

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())

そして、これが私が得るものです:

Connection succesful!
utf8
(1, u'\u043f\u0440\u0438\u0432\u0435\u0442!')

このような出力は、PythonインタープリターコンソールとEclipsePyDevの両方に表示されます。

親切に助けて

4

1 に答える 1

3

出力は有効なUnicodeです。\uxxxx行は2つの項目を持つタプルで構成されているため、PythonはUnicodeエスケープ値()を使用してそれをエコーし​​ます。タプルを出力すると、その内容は代わりにpythonリテラルとして表されます。

次のコードを使用する場合:

print(cursor.fetchall()[1])

代わりに、次のように出力されます。

привет!

これをテストするには、Pythonプロンプトでリテラル値を出力します。

>>> print u'\u043f\u0440\u0438\u0432\u0435\u0442!'
привет!
于 2012-12-05T16:22:02.643 に答える