Python django和uwsgi Unicodeencodeer上的区域设置错误
编辑:我刚刚意识到,当我不想打印来控制那个变量时,它是有效的。为什么? 我遇到了一个与使用utf字符显示字符串标签相关的问题。我在uwsgi ini文件中设置了locale env,如下所示:Python django和uwsgi Unicodeencodeer上的区域设置错误,python,django,localization,uwsgi,Python,Django,Localization,Uwsgi,编辑:我刚刚意识到,当我不想打印来控制那个变量时,它是有效的。为什么? 我遇到了一个与使用utf字符显示字符串标签相关的问题。我在uwsgi ini文件中设置了locale env,如下所示: env =LC_ALL=en_US.UTF-8 env =LANG=en_US.UTF-8 在wsgi.py中: locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') 当我运行应用程序代码时: print (locale.getlocale(), locale.
env =LC_ALL=en_US.UTF-8
env =LANG=en_US.UTF-8
在wsgi.py中:
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
当我运行应用程序代码时:
print (locale.getlocale(), locale.getpreferredencoding())
print locale.getdefaultlocale()
print "option_value", option_value
label = force_text(option_label)
print 'label', label #THIS FAILS
输出为:
(('en_US', 'UTF-8'), 'UTF-8')
('en_US', 'UTF-8')
option_value d
ERROR <stack trace>
print 'label', label
UnicodeEncodeError: 'ascii' codec can't encode character u'\u015b' in position 5: ordinal not in range(128)
(('en_US','UTF-8'),'UTF-8')
(‘en_US’、‘UTF-8’)
选项u值d
错误
打印“标签”,标签
UnicodeEncodeError:“ascii”编解码器无法对位置5中的字符u'\u015b'进行编码:序号不在范围内(128)
当我在生产环境中通过runserver运行应用程序时,问题不存在。
Django 1.6.5 Python 2.7.6 Ubuntu 14.04 uWSGI 2.0.5.1适用于需要使用unicode的Django,如表单等。。您必须在要保存的unicode的前导中设置一个
u
!在保存unicode的任何位置执行此操作!
在这种情况下,我认为它是
(选项标签)
我在这里找到了答案:
意识到控制台要对该错误负责,因此在uwsgi配置文件中导出额外的env变量可以解决问题:
env=PYTHONIOENCODING=UTF-8
此命令是否有错误<编码>打印“选项值”,选项值打印“标签”,标签失败(编辑)请回答!答案是肯定的!label变量的值失败,不是字符串“label”您是否确实尝试过此操作:打印u'label',label
?打印u'label',label UNICODEENCODEER错误:“ascii”编解码器无法对位置5中的字符u'\u015b'进行编码:序号不在范围内(128)因此,因为当您想在窗体等中使用uni代码时,django中的标签是'option\u value'
。。您必须在要保存的unicode的前导中设置一个u
!在保存unicode的任何位置执行此操作!