Python Django:在管理员中显示特殊字符,但不在我的网站上显示?

时间:2014-04-03 22:14:16

标签: python mysql django unicode utf-8

使用管理员:

我可以将这样的字符:«æšʩЖあ☃»放入文本字​​段中。 然后,这些字符将在管理侧栏上正确显示为“最近的操作”。

这告诉我,有些django正在查询我的数据库,这些字符正确存储然后正确表示。

使用Views.py 如果我在views.py中执行类似的操作:

var = '«æšʩЖあ☃»'
render_to_response( ... bla bla bla
{'var':var} .. bla bla...)

它在我的网页上正确显示。

然而 在我的django应用程序中,我有一些手动连接进入数据库,如下所示: 的 myscript.py

con = mdb.connect('mysql.server','name','password','mydb')
cur = con.cursor(mdb.cursors.DictCursor)
cur.execute(
            """SELECT * FROM swimsets_swimset"""
            )
container = cur.fetchone
myquery = container['column-name']

mylist.append(myquery)

views.py

 var = myscript.myfunction() # returns the mylist shown above
   render_to_response(...{'var':var}...)

然而,它会将页面上的列表显示为[\ x8890 \ x923 \ etc,\ 1313 \ 23x \ etc] 然后,如果我打印列表中的每个项目,绝对不显示任何内容。

我尝试了什么:

添加:con = mdb.connect('mysql.server','name','password','mydb',use_unicode=True, charset='utf8')

添加:# -*- coding: utf-8 -*-(对于views和myscript.py) 添加:DEFAULT_CHARSET ='UTF-8'(到settings.py)

我已经阅读了无数的堆栈和大量的文档,但我仍然无法得到它。谢谢,谢谢。 Python Django Encoding Error, Non-ASCII character '\xe5'

如果我这样做:     var.decode( 'ISO-8859-1')。编码( 'UTF-8')

它似乎显示了一些奇怪的字符,但它并不是真正的修复。我怀疑这是django如何能够在管理员面板中正确显示各种unicode。

谢谢

1 个答案:

答案 0 :(得分:2)

好吧,我讨厌成为回答他自己问题的那个人,但是这个问题已经让我好几天了,我甚至还有另一个堆栈问题,我在它没有回复后删除了。我对希望获得更好帮助的问题有了更清楚的认识,但我已经足够清楚自己调试它了!

让Django显示网页上的特殊字符而不是\ x1231 \ d2314的全部内容是:

use_unicode=True, charset='utf8添加到con = mdb.connect('mysql.server','name','password','mydb',use_unicode=True, charset='utf8')

添加:# -*- coding: utf-8 -*-(对于views和myscript.py)添加:DEFAULT_CHARSET = 'UTF-8'(到settings.py)

然后最后,将unicode(var)添加到手动连接到数据库并将查询数据加载到var的myscript.py中。