Python Behave+;Windows上的非ascii步骤
Python BDD framework Behave在其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提供
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模块进行猴子补丁应该很容易