在Python中从文件读取时,为什么撇号(“'”)变成▒?

时间:2019-02-23 04:36:51

标签: python-3.x bash

我用Bash打开了一个Python文件。 Python文件应读取utf-8文件,并将其显示在终端中。它给了我一堆▒(“Aaron▒s”而不是“ Aaron's”)。这是代码:

# It reads text from a text file (done).
f = open("draft.txt", "r", encoding="utf8")
    # It handles apostrophes and non-ASCII characters.
    print(f.read())

我尝试过以下几种组合:

  • 使用打开功能(“ r”和“ rb”)读取格式
  • strip()和rstrip()方法调用
  • decode()方法调用
  • 文本文件编码(特别是ANSI,Unicode,Unicode big endian和UTF-8)。

它仍然无法正确显示撇号(“'”)。如何使其显示撇号而不是??

1 个答案:

答案 0 :(得分:2)

问题出在Git Bash。如果我切换到Powershell,Python会完美地显示撇号(Aaron)。语义读取错误(Aaron▒)仅在Git Bash中出现。如果我了解更多信息,我将提供更多细节。

更新:@jasonharper和@entpnerd建议draft.txt撇号可能是“撇号”而不是合法的撇号。我将draft.txt撇号(从Google Doc复制并粘贴)与直接输入的撇号进行了比较。它们看起来不一样(’与“”)。在xxd中,撇号字符的值为92。实际的撇号为27。GitBash仅支持后者(除非我需要配置某些东西,这很有可能)。

第二次更新:阐明我正在使用Git Bash。我不知道有运行Bash的多个终端(这是正确的放置方式吗?)。