【问题标题】:Cannot use os.system with 'æ', 'ø' or 'å'不能将 os.system 与“æ”、“ø”或“å”一起使用
【发布时间】:2020-05-23 07:57:45
【问题描述】:

我正在尝试使用os.system() 从我的python 脚本中执行一个.vbs 脚本。

是这样的

# -*-coding:utf-8 -*-
import os
os.system('cscript myVbsScript.vbs -i "This is a test" "1000" "æøå"')

“æøå”未正确传递。

使用时:

os.system(u'cscript myVbsScript.vbs -i "This is a test" "1000" "æøå"')

我得到错误:

os.system(u'cscript myVbsScript.vbs 10000 "This is a test" "1000" "æøå"')
UnicodeEncodeError: 'ascii' codec can't encode characters in position 55-57: ordinal not in range(128)`

当我不尝试在os.system 中使用“æøå”时,它就像一个魅力 - 所以我担心问题出在os.system

知道如何解决这个问题吗?

【问题讨论】:

  • 你必须使用 Python 2.7 吗?在 3.x 中不会发生此错误。
  • 是的 - 我必须使用 Python 2.7。将字符串声明为 unicode 并不能解决我的问题 - 正如我在帖子中所写的那样。
  • 我建议你阅读这篇文章,这样当你发现这种错误时,你就会明白如何解决它:joelonsoftware.com/2003/10/08/…

标签: python python-2.7 os.system


【解决方案1】:

你应该对你的字符串进行编码(更新的编码类型):

os.system(u'cscript myVbsScript.vbs -i "This is a test" "1000" "æøå"'.encode("iso-8859-1"))

【讨论】:

  • UTF-8 可能不是正确的编码,因为这是 Windows。 MBCS 可能,或者完全是其他东西。
  • 这给了我错误:SyntaxError: Non-ASCII character '\xe6' in file D:\sandbox\keybordEmulator\test.py on line 2, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
  • 因为显然您删除了# -*-coding:utf-8 -*- - 错误消息告诉您这一点。这是 Python 3 通过简单地声明 UTF-8 是脚本的默认编码来处理的另一件事。 (同样,我们必须假设您的文本实际上是 UTF-8;没有相反的证据,但有时人们盲目地应用这些东西而不理解它们的含义。)
  • @AKX 你是对的!我必须使用以下内容:os.system(u'cscript myVbsScript.vbs -i "This is a test" "1000" "æøå"'.encode("iso-8859-1"))
【解决方案2】:

解决办法:

# -*-coding:utf-8 -*-
import os
os.system(u'cscript myVbsScript.vbs -i "This is a test" "1000" "æøå"'.encode('iso-8859-1')

.vbs 脚本无法读取 utf-8 编码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-13
    • 2011-10-29
    • 1970-01-01
    • 2018-10-24
    • 2018-01-28
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多