Русские кодировки в Xerces/Xalan

Q. Я пытаюсь заставить Xalan 2.1.0 (запускается из командной строки) понимать русские буквы, но он ничего кроме UTF-8 и ISO-8859-5 понимать отказывается.

Конечно же можно все преобразовать в UTF-8, но хотелось бы все же обрабатывать документы в Cp1251. Кто-нибудь смог его заставить понимать Cp1251?


Во-первых, читать соответсвующий раздел в "Java: Русские буквы и не только...".


A [Sergey Kluchkowsky]. Суть проблемы: даже после ковыряния в исходниках xerces’а xalan ругался на кодировку. Всё пофиксилось после прочтения соответствующей приписки.

Лежит эта приписка в исходниках xalan: [ xalan-j\src\org\apache\xalan\xpath\dtm\package.html ] вкратце, мысль следующая: чтобы xalan использовал пропатченный xerces, нужно при создании XSLTProcessor’а использовать синтаксис:

org.apache.xalan.xslt.XSLTProcessor xsltProc =
org.apache.xalan.xslt.XSLTProcessorFactory.getProcessor(
         new org.apache.xalan.xpath.xdom.XercesLiaison());

вместо дефолтного .getProcessor() без параметров.

другой вариант исправления был найден, когда я заставил ant’а собирать xalan-j:

в файле [ org\apache\xalan\xpath\xml\FormatterToXML.java ] после строки:

    s_revsize.put("KOI8-R", new Character('\uFFFF'));

добавляются:

    s_revsize.put("CP1251",          new Character('\uFFFF'));
    s_revsize.put("CP866",           new Character('\uFFFF'));

После чего можно использовать .getProcessor() и не заморачиваться.

 
  faq/xercesrus.txt · Последние изменения: 2012/03/27 05:15
 
Нас поддерживают: Рейтинг@Mail.ruliveinternet.ru