Вывод Java XSLT неправильно показывает символы A0, B7 в браузере - PullRequest
0 голосов
/ 08 февраля 2012

У меня есть веб-приложение на основе Java / XML / XSL, которое берет документ XML из другой службы, и затем мы отображаем основной текстовый режим.

На обоих сайтах отображается один и тот же блок текста (который может включать форматирование HTML, английский / французский). Основной сайт отображается нормально, но мой сайт отображает некоторые символы неправильно. Все содержимое, включая французские символы, отображается правильно, кроме этих немногих.

Проверка документа. Я вижу, что A0, B7 не отображаются правильно.

При поиске на этом сайте я нашел этот вопрос / ответ:

Является ли ED A0 80 ED B0 80 действительной последовательностью байтов UTF-8?

В принятом ответе требуется, чтобы нелегальный UTF-8 интерпретировался как Windows-1252. Те персонажи, которых он показывает, это те, кого я вижу.

Насколько я знаю, документ поступает на мой сайт UTF-8 (из веб-приложения на основе .NET, если это имеет значение), и мы сохраняем его как таковой и отображаем как таковой. Он хранится в виде документа XML и преобразуется для отображения выходных данных.

Блок отображается с отключением-выводом-экранированием (так, чтобы отображалось форматирование HTML), и это, похоже, работает правильно.

В идеале я должен был бы отображать эти символы так, как они были задуманы (A0 - это пробел), чтобы мой вывод выглядел так же, как родительский сайт.

Любая помощь или совет приветствуется.

Ответы [ 2 ]

1 голос
/ 09 февраля 2012

По сути, существует недопонимание между процессором XSLT, который выводит результат с использованием одной кодировки A, и программным обеспечением дисплея, которое отображает документ, полагая, что его кодировка - B. У вас недостаточно информации для определения что такое А и В; и вы не были уверены в «программном обеспечении дисплея», которое, как я подозреваю, является комбинацией веб-сервера и браузера. Убедитесь, что кодировка, указанная в содержимом (объявление XML или объявление кодировки HTML), кодировка, указанная в заголовке HTTP, и фактическая кодировка байтов все соответствуют друг другу.

0 голосов
/ 09 февраля 2012

Введенные вами байты символов (ED A0 80 и ED B0 80) являются символами Юникода для так называемых суррогатов, которые всегда появляются парами.
См. Википедия Юникод суррогаты . Для подмножества суррогатных символов Юникода см. Обзор Юникода .
Следующий шаг - выяснить, как они туда попали: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...