【问题标题】:Getting error on windows but not on linux with japanese characters在 Windows 上出现错误,但在带有日文字符的 Linux 上却没有
【发布时间】:2017-04-27 00:48:25
【问题描述】:

我想从目录中读取文件名并打印出它们的名称。 这是我的代码:

png_files = []
for root, dirs, files in os.walk('output'):
    for file in files:
        png_files.append(file)
for name in png_files:
    print(name)

这有效,但仅适用于 linux(不适用于 windows),我不知道为什么。我的文件有一些日文字符,我知道问题出在其中,但不知道如何解决。

我收到这条消息:

'charmap' 编解码器无法对位置 19-27 中的字符进行编码:字符映射到

我试过encode('UTF-8')然后我得到了:

b'forecast_traffic\xe4\xb8'

我知道当你有b'' 时,这意味着它是一个字节串,所以我尝试了name.encode('UTF-8').decode(),但我再次收到相同的错误消息,如果我尝试仅编码我得到错误:

'str' 对象没有属性'decode'

有谁知道如何解决这个问题以及我的错误在哪里?

【问题讨论】:

  • Windows 控制台无法处理特殊字符。我以前在使用西班牙语字符时遇到过同样的问题。
  • @SantiPeñate-Vera 非常感谢,我花了一个小时思考问题可能出在哪里。您可以将其发布为答案,我会接受。
  • @SantiPeñate-Vera 它已修复。检查我的答案。希望它也适用于西班牙语。

标签: python python-3.x unicode windows-console


【解决方案1】:

“Windows 控制台不打印 Unicode”错误已修复。检查下面的链接。 http://bugs.python.org/issue1602 还有这个https://wiki.python.org/moin/PrintFails

或者使用pip install win-unicode-console安装win_unicode_console

【讨论】:

  • 所以我明白在 python 3.6 中这是固定的,对吧?
猜你喜欢
  • 1970-01-01
  • 2013-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-15
  • 1970-01-01
相关资源
最近更新 更多