У нас есть процесс, в котором XML передается нам через ESMTP в теле письма. Набор символов в теле письма указан как ISO-8859-1 , и для XML не указана кодировка. Согласно протоколу значение по умолчанию - UTF-8 .
Проблема в том, что наш синтаксический анализатор XML выдает исключение, когда встречает символ ®, потому что считает, что выполняет синтаксический анализ UTF-8 , а символ ® в UTF-8 равен 2 байты, а не 1, как в ISO-8859-1 .
- Должны ли мы предполагать, что это тело ISO-8859-1 и, таким образом, переопределять кодировку XML ( UTF-8 )?
- Субъективно, является ли электронное письмо отправленным неправильно, и было бы лучше, если бы мы попытались интерпретировать как UTF-8 на нашей стороне или спросить, кто бы ни отправлял его, правильно и последовательно указать кодировку
Вот пример тела письма с XML:
Delivered-To: ...
Received: ...
Received: ...
Return-Path: ...
Received: ...
Received-SPF: ...
Authentication-Results: ...
Received: ...
Thread-Topic: ...
From: ...
To: ...
Subject: ...
Date: ...
Message-ID: ...
MIME-Version: 1.0
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: 8bit
X-Mailer: Microsoft CDO for Windows 2000
Content-Class: urn:content-classes:message
Importance: normal
Priority: normal
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.4325
<?xml version="1.0"?>
...
<comments>Super Widget®</comments>
...