【问题标题】:Pycharm and UTF-8 in code代码中的 Pycharm 和 UTF-8
【发布时间】:2014-02-25 04:24:45
【问题描述】:

当我尝试运行这段代码时:

with open('scraped.csv', 'w') as dump:
        writer = csv.writer(dump, delimiter='ę', escapechar='\\',quoting=csv.QUOTE_NONE)
        writer.writerow(('author', 'ups', 'downs',
                         'score', 'sub_name', 'replys',
                         'created_utc', 'pulled down at'))

在 PyCharm 中,我收到以下错误

  File ..., line 38, in <module>
'created_utc', 'pulled down at'))
UnicodeEncodeError: 'ascii' codec can't encode character '\u0119' in position 6: ordinal not in range(128)

PyCharm 不能在文件中支持 UTF-8 吗?还是我在某处缺少设置。在 Sublime 中构建相同的文件。

【问题讨论】:

  • 我相信csv 模块指定文件必须以二进制模式打开。
  • @MarkRansom:在 Python 3 上,它应该是带有 newline='' 参数的文本模式。

标签: python python-3.x utf-8 pycharm


【解决方案1】:

我之前在 PyCharm 中遇到过类似的错误,我认为这与选择“ascii”而不是 UTF8 的编码检测有关。然而,有一个简单的解决方法:

with open('scraped.csv', 'w', encoding='utf8') as dump:
    writer = csv.writ...

编码选项将强制文件加载 UTF8。

【讨论】:

  • @J.F.Sebastian 在哪里?什么原因?
  • 如果未提供显式编码,则open() 使用locale.getpreferredencoding(False)
  • Python 3 的 CSV 模块文档要求传递给 csv.writer 的文件对象使用 newline='' 打开。请参阅docs.python.org/3/library/csv.html#csv.writer 和随附的脚注。
  • 特别是,我的终端设置了 LANG="en_AU.UTF-8",而 PyCharm 似乎没有 - 这可能解释了默认值的差异。在 PyCharm 中运行 LANG="en_AU.UTF-8" python3.3 unicodecsv.py 可以让原始代码正确运行(尽管显式设置 encoding 是更好的解决方案)
  • 另外,将LANG=en_AU.UTF-8 添加到 Settings->Project Settings->Console->Python Console->Environment variables 修改 PyCharm 控制台设置
猜你喜欢
  • 1970-01-01
  • 2017-06-20
  • 1970-01-01
  • 2020-12-09
  • 2019-02-02
  • 1970-01-01
  • 1970-01-01
  • 2015-02-26
  • 2012-01-26
相关资源
最近更新 更多