str_ru = 'строка'
with open('str_ru_text_1.txt', 'w') as f:
f.write(str_ru)
with open('str_ru_text_2.txt', 'w') as f:
f.write(str_ru.encode('utf-8').decode('utf-8'))
with open('str_ru_bytes.txt', 'wb') as f:
f.write(str_ru.encode('utf-8'))
str_en = 'string'
with open('str_en_text_1.txt', 'w') as f:
f.write(str_en)
with open('str_en_text_2.txt', 'w') as f:
f.write(str_en.encode('utf-8').decode('utf-8'))
with open('str_en_bytes.txt', 'wb') as f:
f.write(str_en.encode('utf-8'))
1. Почему файлы 'str_ru_text_1.txt', 'str_ru_text_2.txt' в кодировке Windows 1251, а файлы 'str_en_text_1.txt', 'str_en_text_2.txt' - в UTF-8?
2. Есть ли способ записать utf-8 без str.encode('utf-8')?
3. Где описаны правила записи строк в файл? Где и что почитать по этой проблеме?
Python 3.4, Windows 8.1
Демонстрация в Sublime Text 2 (youtube)
Обратное действие:
with open('str_ru_text_1.txt', 'rb') as f:
print(f.read().decode('utf-8'))
with open('str_en_text_1.txt', 'rb') as f:
print(f.read().decode('utf-8'))