我的文件test.py
包含内容:
print u'\u0410'
和Makefile
:
test:
python test.py
当我在Vim :!python test.py
写作时,我得到了
А
Press ENTER or type command to continue
但是当我写:make test
时,我得到了
python test.py
Traceback (most recent call last):
File "test.py", line 1, in <module>
print u'\u0410'
UnicodeEncodeError: 'ascii' codec can't encode character u'\u0410' in position 0: ordinal not in range(128)
make: *** [test] Error 1
Press ENTER or type command to continue
终端中的 make test
没问题。
任何人都有任何想法为什么会如此?你可以重现吗?或者只是我的设置?
答案 0 :(得分:0)
变化:
print u'\u0410'
为:
print u'\u0410'.encode('utf-8')
这里发生的事情是vim在2>&1 | tee
之后添加了shellpipe
(来自make
设置)(从makeprg
设置中设置)。因此,您的test.py
脚本实际上已被重定向。尝试运行$ test.py > /tmp/foo
,您将收到相同的错误。解决方案:将输出编码为合理的编码,例如utf-8
。