将表单数据发送到Flask应用程序时出现以下错误。它说它将使用UTF-8编码,但语言环境已经是UTF-8。这个错误意味着什么?
/home/.virtualenvs/project/local/lib/python2.7/site-packages/werkzeug/filesystem.py:63:
BrokenFilesystemWarning: Detected a misconfigured UNIX filesystem:
Will use UTF-8 as filesystem encoding instead of 'ANSI_X3.4-1968'
$ locale
LANG=en_US.utf8
LANGUAGE=en_US.utf8
LC_CTYPE="en_US.utf8"
LC_NUMERIC="en_US.utf8"
LC_TIME="en_US.utf8"
LC_COLLATE="en_US.utf8"
LC_MONETARY="en_US.utf8"
LC_MESSAGES="en_US.utf8"
LC_PAPER="en_US.utf8"
LC_NAME="en_US.utf8"
LC_ADDRESS="en_US.utf8"
LC_TELEPHONE="en_US.utf8"
LC_MEASUREMENT="en_US.utf8"
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=en_US.utf8
答案 0 :(得分:10)
这不是一个严重错误,只是警告Werkzeug无法检测到良好的语言环境,因此使用UTF-8
代替。这个猜测可能是正确的。
有关如何正确设置区域设置的信息,请参阅this Arch Linux wiki article。它提到如果您正在从某些环境(如Vim)运行,即使正确配置了语言环境,Python也可能会看到ANSI_X3.4-1968
编码。
在ViM中执行
:!python -c "import sys; print(sys.stdout.encoding)"
时,输出可能是ANSI_X3.4-1968
,即使区域设置在任何地方都正确设置。将PYTHONIOENCODING
环境变量设置为utf-8
以解决问题。
答案 1 :(得分:0)
我也看到了这个错误。在挖掘代码之后,我发现这个错误是无害的,只是/usr/local/lib/python2.7/dist-packages/werkzeug/filesystem.py
中的警告:
warnings.warn(
'Detected a misconfigured UNIX filesystem: Will use UTF-8 as '
'filesystem encoding instead of {0!r}'.format(rv),
BrokenFilesystemWarning)
所以,我不担心这个警告。