Използвам функцията за регистриране на Python и имах същия проблем, че преобразува правилната последователност в края на реда "\x0D\x00\x0A\x00
" в "\x0D\x0A\x00
".
Изходът на програмата, който искам да регистрирам чрез Python, е UTF-16
, както можете да видите.
За да избегна, че Python прави нещо различно от просто писане на байтовете, които получава от stdout, в лог файла, се опитах да добавя encoding="UTF-8"
към logging.FileHandler()
.
Резултатът е, че „\x0D
“ вече не се отпечатва и вместо това получавам „\x0A\x00\x0A\x00
“. Това е малко по-добре, предполагам.
На Linux изглежда, че няма проблем с това. Използвам същия скрипт там, но програмата ми отпечатва UTF-8
знака вместо това.
(Тук остават два въпроса: Защо Python добавя още един нов ред? И възможно ли е да регистрирате допълнителна информация в регистрационния файл? Поставянето на 'U' преди низове или използването на "...".encode(UTF-16) не т работи. Но в противен случай лог-файлът ще съдържа низове с различни кодировки и ще стане безполезен...)
person
user1169333
schedule
05.07.2012