【问题标题】:Hello world in pythonwin with unicode, does not work带有unicode的pythonwin中的Hello world,不起作用
【发布时间】:2021-06-10 07:56:33
【问题描述】:

使用 pythonwin(我从 2018 年开始使用 3.6.8 pywin32 build224.0 版本) 写:

print("Hello world, I make £10000 per month")

或我最初测试的内容

print("Hej världen")

这是“hello world”的瑞典语(我的语言)(10000 英镑是一个例子,不是我的薪水)

另存为文件。 关闭并重新打开它并运行它。 有故障信息:

未能运行脚本 - 语法错误(unicode 错误)“utf-8”编解码器无法解码位置 22 中的字节 0xa3:无效起始字节 (helloworld£10000.py)

好像编辑器用的是Latin-1,python解释器用的是utf-8。

使用记事本将其保存为UTF-8并在pythonwin中重新打开允许运行但来源变为:Hello world, I make £10000 per month

这一定是一个常见的问题,但我找不到 pythonwin 处理它的好方法。无论是在帮助中还是在stackoverflow上。 我在 pythonwin 中看到关于 unicode 问题的讨论是从 2003 年开始的,我不明白为什么现在这是一个问题。

【问题讨论】:

  • Python默认使用UTF-8(你可以在文件开头使用魔术代码来改变解释。那么第二个问题:你使用打印,并且在windows中打印将使用系统代码页(Windows是唯一一个默认不使用 UTF-8 的大型操作系统)。所以你应该在这个论坛上搜索如何打印 UTF-8(所以设置终端或使用其他终端,以便它们是 UTF-8)

标签: python unicode


【解决方案1】:

Pythonwin 在旧版本的 pywin32 中保存为本地化的 ANSI 编码,除非 #coding: 注释指定其他内容。 Pythonwin 读取该注释并保存在声明的编码中,但请注意,我遇到了至少一个旧版本,该版本也存在问题。对于 UTF-8 使用:

#coding: utf8

理想情况下,使用latest version(撰写本文时为301),默认为UTF-8。

如果您像在pip install -U pywin32 中一样通过pip 安装/升级,请确保打开管理员提示符并运行Scripts\pywin32_postinstall.py -install,如果您希望import win32com 之类的东西正常工作。

【讨论】:

    【解决方案2】:

    我找到了解决方案。在 pythonwin 中关闭文件。 在 Windows 10 中,在记事本中打开并保存为“带有 BOM 的 UTF-8”(我有)。 在 Windows 7 中在记事本中打开并保存为“UTF-8”。

    这将保存为带有字节顺序标记的 UTF-8。 在 Pythonwin 中打开,现在应该可以工作了。 . 您甚至可以使用非拉丁语,例如俄语,例如print("Привет") now,编辑器默认不接受(latin-1)。

    即使存在非拉丁字母,Pythonwin 也不会以 UTF-8 保存,除非存在 UTF8-BOM,并且在我的版本中没有选项可以保存为 UTF-8。

    【讨论】:

    • 其实有时候这行不通。有时 pythonwin 在第 1 行说语法错误,即使第 1 行是完美的或空的。我发现你可以在第 1 行写 # coding: utf-8 或 # -- coding: UTF-8 -- 另见stackoverflow.com/questions/728891/… 12 岁。为什么pythonwin(3年前)还有这个bug,所以除了英文不能写Hello World。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-08
    • 2013-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多