Django,openhift上的python非ascii字符

时间:2013-12-05 13:52:36

标签: python django openshift non-ascii-characters python-unicode

我在openshift中有一个django 1.5,python 2.7应用程序,我得到一个带有非ascii字符的DjangoUnicodeDecodeError,比如ç,á,ã..

我花了几个小时试图解决这个问题(我是python,django和openshift的初学者)

它不是在本地发生的,只是在openshift云服务器中。

有没有办法通过ssh解决这个问题?或任何其他..

这是printstack:

Request Method: POST

Request URL: ----

Django Version: 1.5

Exception Type: DjangoUnicodeDecodeError

Exception Value:
'ascii' codec can't decode byte 0xc3 in position 1: ordinal not in range(128). You passed in <django.utils.functional.proxy object at 0x7f10ccfde9d0> ()
Exception Location: /var/lib/openshift/.../python/virtenv/lib/python2.7/site-packages/Django-1.5-py2.7.egg/django/utils/encoding.py in force_text, line 115

Python Executable: /var/lib/openshift/.../python//virtenv/bin/python

Python Version: 2.7.5

Python Path:...

谢谢,

罗伯特。

1 个答案:

答案 0 :(得分:1)

我最近在我的机器上遇到了类似的问题,我通过使用unicode文字+ smart_text解决了这个问题:

from __future__ import unicode_literals
from django.utils.encoding import smart_text


safeText = smart_text('this is my tetxt : %s' % someVaribleHoldingTextData)

或者,您可能需要将从文件读取的数据解码为特定的字符集:

theFile = open(path, 'r')
safeData = theFile.read().decode('utf-8')

编码是一个难题......你必须尝试,然后再试一次:P