再次出现UnicodeEncodeError错误(ascii编解码器无法编码)

3
我在Docker容器中运行Python 3.6 + Gunicorn + Django 2.0.5,使用一些西里尔文项目。当我尝试在Django控制台中记录西里尔文字符时,出现了以下情况。
'ascii' codec can't encode character '\u0410' in position 0: ordinal not in range(128)

同时这也是shell中发生的情况。

Python 3.6.5 (default, May  3 2018, 10:08:28) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> :�ириллица

同时,当我在Docker容器外运行Python 3.5时,一切正常:
Python 3.5.2 (default, Nov 23 2017, 16:37:01) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> Кириллица

有什么办法可以让Docker中的Python 3.6正常处理 Cyrillic 字符串?

1
这不是一个字符串,而是一个标识符。 - Willem Van Onsem
1个回答

1

在你的Python代码的第一行使用# -*- coding: utf-8 -*-

并且在你的Dockerfile中添加:

ENV PYTHONIOENCODING=utf-8


没有起作用 :) 仍然打印("\u041f\u043e\u0435\u0445\u0430\u043b\u0438") UnicodeEncodeError: 'ascii'编解码器无法对位置0-6的字符进行编码:序数不在范围内(128) - AndreyPanferov
也许这可以帮到你:https://dev59.com/I1cQ5IYBdhLWcg3wFP2a - Eduardo Soares
感谢!ENV PYTHONIOENCODING=utf-8 - 帮了大忙。 - AndreyPanferov
我会编辑我的答案并包含这个内容。如果可以的话,请标记为已解决。 - Eduardo Soares

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接