Как работать удобным образом с текстовыми UTF-16 файлами под виндой?
Если с файлами в utf8/ANSI/ASCII кодировке можно работать так:
или сразу сунуть результат read() в регулярное выражение (иногда после безхитростной перекодировки из cp1251/UTF-8),
то с двубайтовыми приходится как-то так:
Вот такая ручная игра c \r и неожиданные баги с покоцаными концами строк, когда забываешь сделать 'rb'/'wb' - раздражают. Что можете посоветовать?
PS. Обожаю MS за гениальное решение использовать в MS-DOS двадцать лет назад \r\n вместо \n и обратные слеши в путях.
Если с файлами в utf8/ANSI/ASCII кодировке можно работать так:
f = open("text.txt")
for line in f:
out_file.write(do_something(line))
или
lines = f.read().splitlines()
или сразу сунуть результат read() в регулярное выражение (иногда после безхитростной перекодировки из cp1251/UTF-8),
то с двубайтовыми приходится как-то так:
f = open("text.txt", "rb")
text = f.read().decode("utf-16").replace('\r', '')
...
#пишем обратно:
open("out.txt", 'wb').write(text.replace('\n', '\r\n').encode("utf-16"))
Вот такая ручная игра c \r и неожиданные баги с покоцаными концами строк, когда забываешь сделать 'rb'/'wb' - раздражают. Что можете посоветовать?
PS. Обожаю MS за гениальное решение использовать в MS-DOS двадцать лет назад \r\n вместо \n и обратные слеши в путях.
