Контекст: Я пытаюсь отправить письма с помощью процедуры Oracle (только HTML/текст, а не текст/обычный). Я использую Oracle 9i.Oracle9i отправить HTML-адрес электронной почты со специальными символами
Проблема: Когда HTML сообщение содержит некоторые символы, такие как & eacute; (é), он игнорирует его, он только пишет ;. Но когда я пишу прямо é в сообщении html, он отправляет e, который лучше.
Примеры:
сообщения посыл:
l_html := '<html>
<head><title>Test HTML message</title></head>
<p>trying à with accent : à</p>
<p>trying HTML encoding of foreign language characters : à
</body>
</html>';
сообщение получат:
trying a with accent : a
trying HTML encoding of foreign language characters : ;
Можно ли преобразовать и к тому же позже "а" или « «используя Oracle 9i?
код, который я использую:
l_boundary CONSTANT VARCHAR2(255) DEFAULT 'a1b2c3d4e3f2g1';
l_temp := l_temp || 'MIME-Version: 1.0' || carriageReturn;
l_temp := l_temp || 'To: ' || p_to || carriageReturn;
l_temp := l_temp || 'Cc: ' || p_cc || carriageReturn;
l_temp := l_temp || 'From: ' || p_from || carriageReturn;
l_temp := l_temp || 'Subject: ' || p_subject || carriageReturn;
l_temp := l_temp || 'Reply-To: ' || p_from || carriageReturn;
l_temp := l_temp || 'Content-Type: multipart/alternative; boundary=' || CHR(34) || l_boundary || CHR(34) || carriageReturn;
-- Write the HTML boundary
l_temp := carriageReturn || carriageReturn || '--' || l_boundary || carriageReturn;
l_temp := l_temp || 'content-type: text/html; charset=windows-1252' || carriageReturn || carriageReturn;
l_offset := dbms_lob.getlength(l_body_html) + 1;
dbms_lob.WRITE(l_body_html, LENGTH(l_temp), l_offset, l_temp);
Может кто-то мне помочь, пожалуйста?
Благодарим вас за быстрый ответ. Фактически, набор символов нашей базы данных не является окном-1252, это WE8ISO8859P1. Кстати, я не могу использовать запрос с UTL_I18N, у меня есть ошибка выполнения ** ORA-00904: «UTL_I18N». «MAP_CHARSET»: identicateur non valide **. Миграция в ожидании, но мне нужно найти решение до этого завершения миграции ^^ – nbadaud
И, кстати, когда я использую ** charset = WE8ISO8859P1 **, мой пример электронной почты отправляет ** $ eacute; ** вместо * *; **. Это не разрешает мою проблему:/ – nbadaud
Это должно быть 'charset = ISO-8859-1'. 'WE8ISO8859P1' - это имя набора символов Oracle, вы должны использовать имя IANA. –