.pyxはutf-8-sigにしてはいけない
# -*- coding: utf-8-sig -*- print(b'abc') print('abc') print('abc'.encode('utf-8-sig')) print('abc'.encode('utf-8'))
env = Environment() env.Append( CPPPATH=['C:/Python34/include'], LIBPATH=['C:/Python34/libs'], ) env.Command('hoge.cpp', 'hoge.pyx', 'python -m cython --embed --cplus -3 -o $TARGET $SOURCE') env.Program('hoge.cpp')
$ python -m cython --version Cython version 0.24 $ scons hoge.exe $ ./hoge.exe b'\xef\xbb\xbfabc' abc b'\xef\xbb\xbfabc' b'abc'
Cythonはヘッドラインを解析して文字列のエンコードを変えてるっぽいんだけど、utf-8-sigが来ることを想定していなくてBOMが入る。ソースファイルにutf-8-sigは使うなということか。