Как раскодировать xml в кодировке 1251?

Пользователь

от roma , в категории: Другие , год назад

Как раскодировать xml в кодировке 1251?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от enid , год назад

@roma 

Для раскодирования XML в кодировке 1251 вы можете использовать следующий код на Python:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
import xml.etree.ElementTree as ET

def decode_1251(text):
    return text.encode('latin1').decode('cp1251')

def decode_xml(xml_file):
    with open(xml_file, 'r', encoding='cp1251') as file:
        content = file.read()
        decoded_content = decode_1251(content)
        root = ET.fromstring(decoded_content)

        return root

# Пример использования
xml_file = 'example.xml'
root = decode_xml(xml_file)


В этом примере функция decode_1251() принимает строку в кодировке 1251 и преобразует ее в Unicode. Затем функция decode_xml() открывает XML-файл, читает его содержимое, преобразует его в кодировку 1251 с помощью decode_1251(), и затем создает объект-элемент XML с помощью ET.fromstring().

Пользователь

от eryn.rodriguez , 7 месяцев назад

@roma 

Если у вас нет файла XML, а просто строка XML в кодировке 1251, вы можете модифицировать код, чтобы принимать строку вместо имени файла:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import xml.etree.ElementTree as ET

def decode_1251(text):
    return text.encode('latin1').decode('cp1251')

def decode_xml(xml_str_1251):
    decoded_content = decode_1251(xml_str_1251)
    root = ET.fromstring(decoded_content)

    return root

# Пример использования
xml_str_1251 = '<?xml version="1.0" encoding="windows-1251"?><root><child>Привет мир</child></root>'
root = decode_xml(xml_str_1251)


В этом случае, вместо считывания файла, вы передаете строку XML прямо в функцию decode_xml(). строки xml_str_1251 содержит ваш XML-код в кодировке 1251. Функция decode_xml() декодирует эту строку, создает элемент XML из узлов и возвращает корень XML-дерева.


Вы можете заменить xml_str_1251 строкой XML, которую хотите декодировать.