Python BDD フレームワークの 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.getpreferredencoding
ような場合に使用されます。
しかし、Windows では、この関数は常に1 バイトの文字セットを返します (いわゆる「非 Unicode プログラムの文字セット」)。ラテン語は Windows-1252、キリル文字は Windows-1251 などです。
そのため、UTF-8 py ファイルは常に壊れています。
私の質問は、1 バイト文字セットを避けたい場合、Windows の Behave で非 ASCII ステップ定義を使用するにはどうすればよいですか?