PHP 5, XSL и Персонаж Ú - PullRequest
0 голосов
/ 04 мая 2011

Я с трудом получаю письмо

Ú

для рендеринга через PHP 5.3 и XSL.Это часть строки в базе данных, которая загружается в узел XML внутри тегов.Однако это приводит к тому, что преобразование XSL / XML не отображается.Удаление символа из строки мгновенно решает проблему.

Есть идеи?

Ответы [ 3 ]

1 голос
/ 04 мая 2011

Какую кодировку символов вы используете?Судя по звукам, у вас есть какое-то несоответствие кодировки символов.

Если ваш XSL использует ISO-8559-1 (или эквивалент ASCII), и вы пытаетесь вывести на страницу в кодировке UTF-8тогда вывод символов будет отключен.Это также работает наоборот.

0 голосов
/ 04 мая 2011

Ваш механизм преобразования XSL, вероятно, интерпретирует ваш документ как неправильно сформированный XML из-за проблем с кодировкой.Если этот текст, содержащий Ú, хранится с использованием некоторой 8-битной кодировки (например, варианты ISO-8859), то этот символ не будет создавать действительный октет UTF-8, если он используется как таковой без преобразования символов.Недопустимые символы в документе XML будут означать, что он не является правильно сформированным XML, и обработка его как XML запрещена.

Существует множество моментов, когда может произойти ошибка кодирования:

  • неправильно храниться в базе данных
  • это может быть неверно прочитано из базы данных
  • вы можете создать свой XML путем объединения строк, использующих разные кодировки
  • вы можете манипулировать текстом с помощьюинструмент или метод, который не может обработать вашу кодировку или не знает о ней
  • ваш механизм XSLT может не знать о правильной кодировке входного потока, что приводит к отклонению файла, даже если в нем нет ошибки кодирования

Мои случайные предположения о вероятных причинах этого - пункты 3 и 5.

0 голосов
/ 04 мая 2011

На самом деле я не знаю правильного ответа, но у меня есть решение, как показано ниже:

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