Создание вывода текста в кодировке ISO-8859-1 из источника XML в кодировке UTF-8

У меня возникают трудности с выводом текста в кодировке ISO-8859-1 из источника XML в кодировке UTF-8 с использованием XSLT (с использованием Oxygen для запуска преобразования).

Например, когда источник содержит короткое тире, Oxygen выдает ошибку: «Выходной символ недоступен в этой кодировке (десятичное число 8211)».

Короткое тире - это символ, доступный в наборе символов ISO-8859-1, и процессор знает, что источник закодирован в UTF-8 (из его объявления XML). Мой XSLT содержит

<xsl:output method="text" encoding="ISO-8859-1"/>

Так почему же он просто не заменяет символ в кодировке UTF-8 символом в кодировке ISO-8859-1? Я могу понять, почему символы, доступные в Unicode, но не в ISO-8859-1, могут вызывать проблемы, но почему символы доступны в обоих?

Есть простое решение?

Спасибо за любой совет.


person MDow    schedule 19.03.2014    source источник
comment
Какую версию XSLT вы используете? Можете ли вы также показать свой ввод XML?   -  person Mathias Müller    schedule 19.03.2014


Ответы (1)


Насколько я могу судить, ISO-8859-1 не содержит символ Unicode 8211 / U2013, работает только Windows-1252. Итак, oXygen или его XSLT-процессор правы в этой ошибке.

person Martin Honnen    schedule 19.03.2014
comment
Да, вы правы - похоже, меня об этом дезинформировали. Когда я добавил функцию замены, например: ‹xsl: value-of select = replace (my_element, '-', '-') /›, преобразование завершилось успешно и заменил дефисы en на дефисы. - person MDow; 19.03.2014