В Python 2.7, работающем в Ubuntu, этот код:
f = open("testfile.txt", "w")
f.write("Line one".encode("utf-16"))
f.write(u"\r\n".encode("utf-16"))
f.write("Line two".encode("utf-16"))
создает желаемую новую строку между двумя строками текста при чтении в Gedit:
Line one
Line two
Однако тот же самый код, выполненный в Windows 7 и прочитанный в Блокноте, производит неразборчивые символы после «Первой строки», но Блокнот не распознает новую строку. Как я могу написать правильные символы новой строки для UTF-16 в Windows, чтобы они соответствовали выводу, который я получаю в Ubuntu?
Я пишу вывод только для приложения Windows, которое читает только Unicode UTF-16. Я часами пробовал разные советы, но ничего не работает для Блокнота. Стоит отметить, что я могу успешно преобразовать текстовый файл в UTF-16 прямо в Блокноте, но я бы предпочел, чтобы скрипт изначально правильно сохранял кодировку.
"Line one".encode("utf-16")
это довольно глупо. Обычно вы хотите вызыватьencode
только для строк Unicode, поэтому вы должны сделатьu"Line one".encode("utf-16")
. (3.x обеспечивает это, 2.7 - нет.) Я предполагаю, что в этом случае это просто артефакт вашего игрушечного примера, а не ваш реальный код. - person abarnert   schedule 18.06.2013䰀椀渀攀 琀眀漀
, вы подтвердите, что у вас есть проблема с ошибкой на один байт, но не проблема с спецификацией, а䳾椀渀攀 琀眀漀
покажет, что у вас есть обе проблемы и т. д. - person abarnert   schedule 18.06.2013