Werkzeug提出了BrokenFilesystemWarning

时间:2015-12-29 16:46:46

标签: python unix encoding utf-8 flask

将表单数据发送到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

2 个答案:

答案 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)

所以,我不担心这个警告。