我正在使用Django开发我的Web服务。
我的数据库名称是“ django_dulichdb”,并且有一个表“ polls_dulich”。
我已经设置了CHARACTER SET utf8和COLLATE utf8_general_ci,但是在数据库中的数据和通过python代码获得的数据之间仍然存在区别。而已

输入SHOW variables LIKE '%character_set%';后,这是我的字符集

> | Variable_name            | Value                      |
> +--------------------------+----------------------------+ | character_set_client     | latin1                     | |
> character_set_connection | latin1                     | |
> character_set_database   | utf8                       | |
> character_set_filesystem | binary                     | |
> character_set_results    | latin1                     | |
> character_set_server     | latin1                     | |
> character_set_system     | utf8                       |

| character_sets_dir       | /usr/share/mysql/charsets/


1.在mysql中,我键入

select * from polls_dulich


结果是正确的。越南文显示权

tp://travelhanoi.com.vn/Data/ResizeImage/~/userfiles/files/diem li li ha noi / van_mieu_quoc_tu_giamx131x99x2.jpg |河内| VănMiếu,banđầulànơicọacáchoàngtử,saumởrộngthunhậncảcáchọctrògiỏitrongthiênhạ。 VănMiếuQuốcTửGiam banđầulànơihọccủacáchoàngtử,saumởrộngthunhậncả...

2>在终端中,我键入

python select.py


调用select.py。那是select.py

import MySQLdb as mdb
con = mdb.connect('localhost', 'root', '1', 'django_dulichdb');
with con:
cur = con.cursor()
    cur.execute('SET NAMES utf8;')

    cur.execute("SELECT * FROM polls_dulich")

    for i in range(cur.rowcount - 10):

        row = cur.fetchone()
        print (i+1),row[4]


结果是这样的

2ChâacóquihoáºchtÆ°Æ¡ngÄ'á»'igá»ngồ mcổng tam quan,phÆ°Æ¡ngÄ'Ãnh,haidãydải vÅ©vÃnhÃthá»mẫu。 ÃÆtr n tu›› 1 954 954 954 954 954 954 954 1954 »n trong ...

我不知道为什么。请帮帮我。非常感谢 :(

最佳答案

Whowww,它非常简单:D。这是遇到任何麻烦的人的答案,只需修改select.py:

# -*- coding: utf-8 -*-
# code above for using utf8
import MySQLdb as mdb
import sys
reload(sys)
con = mdb.connect(host='localhost',
                     user='root',
                     passwd='1',
                     db='django_dulichdb',
                     charset='latin1',
                     use_unicode=False);
with con:
    cur = con.cursor()
    cur.execute("SELECT * FROM polls_dulich")
    for i in range(cur.rowcount - 10):
        row = cur.fetchone()
        print (i+1),row[4]


:D可以帮助别人。

关于python - Python-准确显示MySQL数据库中的数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23634878/

10-13 02:54