Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Behave+;Windows上的非ascii步骤_Python_Windows_Unicode_Python Behave - Fatal编程技术网

Python Behave+;Windows上的非ascii步骤

Python Behave+;Windows上的非ascii步骤,python,windows,unicode,python-behave,Python,Windows,Unicode,Python Behave,Python BDD framework Behave在其runner.py with open(filename) as f: # -- FIX issue #80: exec(f.read(), globals, locals) # try: filename2 = os.path.relpath(filename, os.getcwd()) code = compile(f.read(), filename2, 'exec') 如您所见,没有为open提供

Python BDD framework Behave在其
runner.py

with open(filename) as f:
    # -- FIX issue #80: exec(f.read(), globals, locals)
    # try:
    filename2 = os.path.relpath(filename, os.getcwd())
    code = compile(f.read(), filename2, 'exec')
如您所见,没有为
open
提供任何字符集。根据其文档,
locale.getPreferredEncode
用于此类情况

但在Windows上,此函数始终返回一个字节的字符集(称为“非unicode程序的字符集”)。拉丁语为Windows-1252,西里尔语为Windows-1251等

所以,UTF-8py文件总是被破坏的


我的问题是,如果我不想使用1字节字符集,如何在Windows上使用非ascii步骤定义?

存在的错误是代码不注意以二进制模式打开文件,这将绕过任何本地编码问题


而且python似乎表现为开发人员,所以解决问题的一个方法是更新到最新的git版本。但是,如果您不能做到这一点,那么使用当前git版本的
exec_file
函数对runner.py模块进行猴补丁应该很容易。

存在的缺陷是代码没有注意以二进制模式打开文件,这将绕过任何本地编码问题

而且python似乎表现为开发人员,所以解决问题的一个方法是更新到最新的git版本。但是,如果您不能做到这一点,那么使用当前git版本的
exec\u文件
函数对runner.py模块进行猴子补丁应该很容易