Кодировка

# определить кодировку файла
file -bi /home/x.txt

# coding: utf-8
# из строки в байты
s = "финтифлюшка"
print(s.encode('utf-8'))
>> b'\xd1\x84\xd0\xb8\xd0\xbd\xd1\x82\xd0\xb8\xd1\x84\xd0\xbb\xd1\x8e\xd1\x88\xd0\xba\xd0\xb0'

# из байтов в строку
s = b'\xd1\x84\xd0\xb8\xd0\xbd\xd1\x82\xd0\xb8\xd1\x84\xd0\xbb\xd1\x8e\xd1\x88\xd0\xba\xd0\xb0'
print(s.decode('latin-1'))
>> финтифлюшка

s = "финтифлюшка"
print(s.encode('utf-8').decode('latin-1'))

# Открываем файл. кодировка = iso-8859-1
with open("1.txt", 'rb') as f:
    bytes = f.read()
    stroka = bytes.decode('iso-8859-1')
# сохраняем в utf-8
with open("2.txt", 'w', encoding='utf-8') as f:
    f.write(stroka)

# -*- coding: utf-8 -*-
# функция
def new_codirovka(filename, newfilename, encoding_from, encoding_to='utf-8'):
    with open(filename, 'r', encoding=encoding_from) as fr:
        with open(newfilename, 'w', encoding=encoding_to) as fw:
            for line in fr:
                fw.write(line)
filename = "путь к файлу"
newfilename = "путь к новому файлу"
encoding_from = "windows-1251"
encoding_to = "utf-8"
new_codirovka(filename, newfilename, encoding_from, encoding_to)

Комментариев нет:

Отправить комментарий