0

我有一个在 Windows 上使用 Python 2.5 的应用程序。它使用 WScript 来获取一些数据。返回的数据可能有多种语言的内容,所以我需要支持获取Unicode数据。

在 Windows 8 之前,这工作得很好。但是,在 Windows 8 中,请求 Unicode 响应无法将数据返回给 Python 程序。CScript 调用的命令行版本仍然有效。

这是一个显示问题的简化 Python 脚本:

import subprocess
cmd = ["cscript","//NoLogo","//U","testscript.js"]
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
proc = subprocess.Popen(cmd, shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE, close_fds=False, startupinfo=startupinfo)
(sout, serr) = proc.communicate()
print repr(sout)

testscript.js包含单行的简单 WScript 文件在哪里(另存为 UCS-2 编码文件):

WScript.Echo("Test 日本語");

在 Windows XP、Windows Vista 或 Windows 7 上运行此程序可正确打印

'T\x00e\x00s\x00t\x00 \x00\xe5e,g\x9e\x8a\r\x00\n\x00'

在 Windows 8 上运行它会打印 '' (因为输出是一个空字符串)。如果我从对 CScript 的调用中删除“//U”参数,我会得到“Test ???\r\n”,这对于获取我的 unicode 数据不是很有用。

有谁知道如何subprocess.Popen在 Windows 8 上从 Python 获取 Unicode 结果?我使用的是 Python 2.5,因为这是第一次编写此代码时的当前版本。我用 Python 2.7.3 试过这个,它有同样的问题。

4

0 回答 0