我很难将Django 1.3.x升级到Django1.4.x。 1.4版本的开发服务器不允许以下代码:
print unicode("Nº")
1.3可以正常工作,但1.4却提供了传奇的解码错误:
'ascii' codec can't decode byte 0xc2 in position 1: ordinal not in range(128)
这是为什么?是否有任何配置将如何处理解码?
注意:print语句只是显示问题的一种简单方法,在实际的旧版应用程序中,有大量代码将非Unicode字符串发送到
unicode
函数。 最佳答案
因此,可能有几个问题。第一个是print unicode("string")
将该字符串作为直接的非unicode字符串(假设这是python 2.7)。如果将其更改为print unicode(u"Nº")
,是否可以使用?
在此与在需要的地方调用.encode('UTF-8')
/ decode('UTF-8')
之间应该有所帮助。在Python 2中处理unicode有点痛苦。在各种PyCon上有很多关于unicode的讨论,其中许多已经发布到youtube。如果您有一个小时的时间或值得观看和https://www.youtube.com/watch?v=sgHbC6udIqc
从它的声音来看,您可能只需要检查一下您要处理的每个字符串的每个源,就可以尽快通过解码('utf-8')或任何编码将其转换为unicode对象。可能。另外,如果您可以直接跳到更高版本的Django(此时1.8之前的所有版本都为零支持),则您可以使用2to3之类的内容来更改为Python3,并且作为副作用,可以摆脱很多此类类型问题。并非总是可行,但值得一试=)
关于python - 将Django 1.3升级到1.4会引发Unicode问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37038143/