我有一個有趣的程序,顯示溫度。一切工作正常,直到我試圖從Conky使用它:僅當從其他程序運行時出現Unicode錯誤?
Traceback (most recent call last):
File "/home/naftuli/Documents/i7zdaemon/get-i7z-value", line 85, in <module>
main()
File "/home/naftuli/Documents/i7zdaemon/get-i7z-value", line 28, in main
get_temp_value(args)
File "/home/naftuli/Documents/i7zdaemon/get-i7z-value", line 63, in get_temp_value
print fmt % (temp if not args.in_fahrenheit else temp * (9.0/5.0) + 32,)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xb0' in position 2: ordinal not in range(128)
爲什麼這隻會拋出一個錯誤,當從另一個程序使用?當我直接從終端運行它時,一切看起來都很好。
下面是我在做什麼:
fmt = u"%d\u00B0C" if not args.in_fahrenheit else u"%d\u00B0F"
# ...
print fmt % (temp if not args.in_fahrenheit else temp * (9.0/5.0) + 32,)
最後一行殺死一切。是什麼賦予了?
我所做的是在我的Conky配置中設置了'override_utf8_locale yes',然後我修改了腳本以創建一個新的'--output-encoding'參數,默認爲'utf8'。成功了!謝謝! –