В 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 и прочетен в Notepad, създава неразбираеми знаци след „Първи ред“, но нов ред не се разпознава от Notepad. Как мога да напиша правилни знаци за нов ред за UTF-16 в Windows, за да съответства на изхода, който получавам в Ubuntu?
Пиша изход за приложение само за Windows, което чете само Unicode UTF-16. Прекарах часове в изпробване на различни съвети, но изглежда нищо не работи за Notepad. Струва си да се спомене, че мога успешно да конвертирам текстов файл в UTF-16 направо в Notepad, но бих предпочел скриптът да запази правилно кодирането на първо място.
"Line one".encode("utf-16")
е малко глупаво нещо. Обикновено искате да извикате самоencode
на Unicode низове, така че бихте направилиu"Line one".encode("utf-16")
. (3.x налага това; 2.7 не.) Предполагам, че в този случай това е просто артефакт от вашия пример за играчка, а не вашият истински код. - person abarnert   schedule 18.06.2013䰀椀渀攀 琀眀漀
ще потвърди, че имате проблема с разместване по един байт, но не и проблема с BOM, докато䳾椀渀攀 琀眀漀
ще покаже, че имате и двата проблема и т.н. - person abarnert   schedule 18.06.2013