powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XSLT из файла с неправильной кодировкой
8 сообщений из 8, страница 1 из 1
XSLT из файла с неправильной кодировкой
    #39648228
shurik05
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

У меня на входе xml файлы без указания кодировки, т.е. utf-8. В файле русский текст в виде крякозяб, чтобы увидеть нормально нужно провести перекодировку из utf-8 в iso-8815-1 из рассматривать как windows-1251.
Необходимо из них получать разные документы с нормальным текстом средствами xslt.
Варианты решения:
1. Для получения html, можно использовать обманку в xsl:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes" encoding="ISO-8859-1" omit-xml-declaration="yes"/>
    <xsl:template match="/">
        <html>
            <head>
                <meta http-equiv="Content-Type" content="text/html; charset=win-1251"/>
...


Нехорошо и нужно не только html.
2. Предварительно провести двойную перекодировку исходных файлов внешними средствами типа iconv, но тут сложности с инфраструктурой.
3. XSL я знаю плохо и кто-то мне подскажет другой путь средствами самого xsl версии 1.0.
...
Рейтинг: 0 / 0
XSLT из файла с неправильной кодировкой
    #39648637
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рекомендую просто каким-нибудь скриптом добавит в исходные файлы указание кодировки.

Например, код на JScript

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
  var fso = new ActiveXObject("Scripting.FileSystemObject");
  var fileName = WScript.Arguments.Item(0);
  var fileStrm = fso.OpenTextFile(fileName, 1);
  var s = fileStrm.ReadAll();
  fileStrm.Close();
  s = s.replace(/^\<\?xml.+?\?\>/, "<?xml version="1.0" encoding="windows-1251"?>");

  fileStrm = fso.CreateTextFile(fileName);
  fileStrm.Write(s);
  fileStrm.Close();
...
Рейтинг: 0 / 0
XSLT из файла с неправильной кодировкой
    #39649224
shurik05
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_,

Так не пойдет с исходном файлом, там не просто указана не та кодировка, там двойное перекодирование: в примере с xsl идет перекодирование из utf-8 в iso-8859-1 и пропускается заголовок xml, а в мета говорится что это windows-1251 - тогда результат отображается корректно. Так можно с результатом xsl преобразования поступить, но хотелось бы не плодить обработок.

Судя по всему остался только 2 вариант, как самый корректный.
...
Рейтинг: 0 / 0
XSLT из файла с неправильной кодировкой
    #39649438
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shurik05там двойное перекодированиеЭто как? В файле используются две различных кодировки? Может приложить сам файл?
...
Рейтинг: 0 / 0
XSLT из файла с неправильной кодировкой
    #39649481
shurik05
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_,

Файл показать не могу, но пример в utf-8 текст выглядит как Äàòà. Если его преобразовать из utf-8 в iso-8859-1, а потом результат из windows-1251 обратно в utf-8, то получим в uft-8 Дата.
...
Рейтинг: 0 / 0
XSLT из файла с неправильной кодировкой
    #39649714
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shurik05Файл показать не могуТогда ничем помочь не могу
shurik05в utf-8 текст выглядит как Äàòà.Это НЕ utf-8. Это обычная Win1251 кодировка, которую вы просматриваете как Win1252

Укажите корректную кодировку 21432079 и все будет работать
...
Рейтинг: 0 / 0
XSLT из файла с неправильной кодировкой
    #39649715
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shurik05Файл показать не могуТогда ничем помочь не могу
shurik05в utf-8 текст выглядит как Äàòà.Это НЕ utf-8. Это обычная Win1251 кодировка, которую вы просматриваете как Win1252

Укажите корректную кодировку 21432079 и все будет работать
...
Рейтинг: 0 / 0
XSLT из файла с неправильной кодировкой
    #39649973
shurik05
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чтобы избежать разночтений кодировок покажу в HEX: C3 84 C3 A0 C3 B2 C3 A0.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XSLT из файла с неправильной кодировкой
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]