Wydrukuj ciąg znaków Unicode na konsolę OK, ale nie powiedzie się, gdy przekierujesz do pliku. Jak naprawić?
Mam Pythona 2.7.1 w wersji Windows XP w uproszczonej wersji chińskiej i mam taki program (windows_prn_utf8.py):
#!/usr/bin/env python
# -*- coding: utf8 -*-
print unicode('\xE7\x94\xB5', 'utf8')
Jeśli uruchomię go na konsoli Windows CMD, wyświetli odpowiedni chiński znak „'”; jeśli jednak spróbuję przekierować dane wyjściowe polecenia do pliku. Mam błąd
D:\Temp>windows_prn_utf8.py > 1.txt
Traceback (most recent call last):
File "D:\Temp\windows_prn_utf8.py", line 4, in <module>
print unicode('\xE7\x94\xB5', 'utf8')
UnicodeEncodeError: 'ascii' codec can't encode character u'\u7535' in position 0: ordinal not in range(128)
Zdaję sobie sprawę, że brakuje tutaj linku. Powinien istnieć sposób na określenie, w przypadku wygenerowania 1.txt, czy znak unicode w 1.txt powinien być zakodowany w utf-8, czy w stronie kodowej-936 lub innych kodowaniach.
Więc jak to naprawić? Preferuję kodowanie utf-8 w 1.txt. Dziękuję Ci.