Как проверить кодировку файла xml
Здравствуйте, frёёm, Вы писали:
ёё>Оч. хочу класс который тупо читает любой поданный на вход xml файл в java.lang.String.
ёё>Проблема в том что хотелось бы определять кодировку файла на лету, если она задана.
не писал (ибо для этого парсеры всё-таки используются, а стринг он не нужен, к тому же всега сеть опасность, что он может оказаться неожиданно большим)
однако, пару подсказок могу дать:
см. здесь, каковы умолчания для xml-кодировки, если не задан пролог или в нём не указана кодировка
а если пролог задан, и в нём кодировка присутствует, то надо её извлечь и применить
т.е. всё укладывается в анализ первых байтов последовательности, ничего особо интеллектуального
Узнать кодировку xml файла
| От: | frёёm |
| Дата: | 03.03.08 10:49 |
| Оценка: |
Оч. хочу класс который тупо читает любой поданный на вход xml файл в java.lang.String.
Проблема в том что хотелось бы определять кодировку файла на лету, если она задана.
Наверняка кто-то, где-то уже что-то для этого написал ?
Ни что в жизни ни даёться так просто как. хотелось бы.
Re: Узнать кодировку xml файла
| От: | . |
| Дата: | 03.03.08 14:58 |
| Оценка: |
frёёm wrote:
> Оч. хочу класс который тупо читает любой поданный на вход xml файл в
> *java.lang.String*.
> Проблема в том что хотелось бы определять кодировку файла на лету, если
> она задана.
Файл содержит байты,а java.lang.String — символы. Путать нельзя.
> Наверняка кто-то, где-то уже что-то для этого написал ?
Даже если кто-то и писал, надеюсь уже переписал.
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re: Узнать кодировку xml файла
| От: | sss1024 | http://microforms.mobile-mir.com/ |
| Дата: | 03.03.08 17:21 | |
| Оценка: |
Здравствуйте, frёёm, Вы писали:
ёё>Добрый день.
ёё>Оч. хочу класс который тупо читает любой поданный на вход xml файл в java.lang.String.
ёё>Проблема в том что хотелось бы определять кодировку файла на лету, если она задана.
ёё>Наверняка кто-то, где-то уже что-то для этого написал ?
тоже сталкивался с вопросом чтения пролога
Это вобщем-то обычная задача но стандартных средств нет.
для чего может понадобится:
например хмл прочитать, поменять и потом сохранить в той же кодировке. Узнать кодировку можно только самому распарсив пролог. Неудобно.
Re[2]: Узнать кодировку xml файла
| От: | frёёm |
| Дата: | 03.03.08 19:46 |
| Оценка: |
Вообщем в итоге да.
Думал ограничиться utf’ами и прочесть первые несколько симоволов до указания encoding.
А потом плюнул, отдал файл парсеру.
Вообще идея была, прочесть xml в память и по нему делать xslt преобразования.
Посмотрев стандартный трансформер увидал что он строит по xml’лю DOM.
Так что вопрос отпал сам собой, сейчас парсером получаю w3c DOM и по нему работаю трансформером.
Как проверить кодировку файла xml
![]()
Проверка XML на соответствие XSD (схеме XML данных) ENG ВХОД Контакты
На странице производится проверка XML данных на соответствие XSD (схеме XML данных) с возможностью редактирования данных.
Ввод XML данных можно произвести путем загрузки XML файла или скопировав текст из буфера обмена в окно редактора. Кодировка файла определяется на основе XML декларации, поэтому ее наличие обязательно.
В редакторе данные проверяются на соответствие XML формату и форматируются для удобства работы. При наличии ошибок редактор помечает соответствующие строки символом . Описание ошибки можно просмотреть установив курсор на этот символ.
- если был загружен файл XSD, то будет произведена проверка в соответствии со схемой в этом файле
- если файл не загружен, то система попытается автоматически определить схему на основе ключевых полей из XML данных.
Результаты проверки выводятся в виде сообщений в правом верхнем углу страницы. Строки с ошибками помечаются в окне редактора. После исправления ошибок в редакторе можно проверить измененные данные.
![]()
XML данные из редактора можно распечатать или сохранить в файл (если найдены ошибки, то они добавляются в текст в виде комментариев). Для некоторых схем документов имеется возможность XSL преобразования в формат HTML и/или PDF. Отправка в систему ЭДО доступна после настройки параметров для зарегистрированных пользователей.
Для суммирования значений элементов используется кнопка . При этом необходимо ввести путь к элементам (xpath) или выделить название элемента в редакторе для автоматического формирования пути.
Для настройки параметров редактора используется кнопка . Если после редактирования настроек нажать кнопку Сохранить , то настройки помеченные цветом будут сохранены для следующих сеансов работы.
- jQuery: библиотека (JavaScript) ver.
- Ace: редактор (JavaScript) (Ajax.org Cloud9 Editor) ver. 1.1.9
- lxml: библиотека для обработки XML данных (Python) ver. 3.8.0
Проверка XML‑файла
Мы не можем распознать и проверить этот файл. К нерегламентируемым форматам относятся протокол согласования цен, реестр сертификатов и документы в произвольном формате.
Неверный формат файла. Загрузите файл в формате XML
Неверная кодировка файла. Загрузите файл с кодировкой windows-1251
Невозможно определить тип файла. Добавьте в файл атрибут КНД
Найти КНД можно в нашем справочнике документов. КНД указан в приказе ФНС к документу и в примере XML документа, который можно скачать.
Ошибка на странице
Попробуйте обновить страницу позже. Если ошибка повторяется —
напишите нам об этом в чат поддержки .

Если вам нужна помощь при написании XML-файлов, подключайтесь к Диадоку и мы проведем интеграцию с вашей учетной системой.
Как проверить кодировку файла xml
Как выгрузить данные в XML в кодировке отличной от UTF-8 например Windows-1251.
Парметр КодировкаXML — только для чтения! Особенно убивает абсурд
ЗаписьХМЛ=Новый ЗаписьXML()
ЗаписьХМЛ.Параметры.Кодировка — тоже только для чтения.
Хочу подружить выгрузку из 8.1 и 7.7 подскажите обходные пути если они есть. Забавно что из 7.7 выгрузить можно в любой кодировке, а вот прочитать нет. В 8.1 наоборот.
И кто писал эти функции.
(0) Новый ПараметрыЗаписиXML(<Кодировка>, , , , )Кодировка>
(0) родной формат xml не поддерживает 1251. делал так
ТекстXML = Новый ТекстовыйДокумент();
Попытка
ТекстXML.Прочитать(ИмяФайла,КодировкаТекста.UTF8);
Исключение
Сообщить(«Не удалось открыть файл»);
КонецПопытки;
ТекстXML.ЗаменитьСтроку(1,»»);
ТекстXML.УстановитьТипФайла(КодировкаТекста.ANSI);
ИмяФайлаТхт=Сред(ИмяФайла,1,СтрДлина(ИмяФайла)-4);
ТекстXML.Записать(ИмяФайлаТхт+».txt»,КодировкаТекста.ANSI);
(2) ну только расширение не тхт у тебя
(1) из синтаксис-помошника:
——————————
ПараметрыЗаписиXML.Кодировка (XMLWriterSettings.Encoding)
ПараметрыЗаписиXML (XMLWriterSettings)
Кодировка (Encoding)
Использование:
Только чтение. (. )
Описание:
Тип: Строка. Кодировка, используемая при записи XML (имеет смысл при записи в файл).
ЗаписьXML (XMLWriter)
ОткрытьФайл (OpenFile)
Вариант синтаксиса: По имени и типу кодировки
Описание:
Открывает файл для записи XML. Позволяет указать тип кодировки, который будет использован для записи файла XML.
И 1251 в том числе.
(5) не работает
(6) повторюсь. формат xml поддруживает только утф-8 и утф-16
(7) Что ж они (СП 1С) тогда вводят в заблуждение?
(5-7) у меня реально записало в 1251 это потверждается открытием этого файла в опенофисе с принудительным указанием кодировки 1251 однако 7.7 его почему так с крокозяблами и читает
не понимаю что нужно указать чтобы эту выгрузку нормально прочитала 7.7
вот в спецификации сказано.
4.3.3 Character Encoding in Entities
Each external parsed entity in an XML document MAY use a different encoding for its characters. All XML processors MUST be able to read entities in both the UTF-8 and UTF-16 encodings. The terms «UTF-8» and «UTF-16» in this specification do not apply to character encodings with any other labels, even if the encodings or labels are very similar to UTF-8 or UTF-16.
Я не знаю — бился долго. Может у кого получилось? — у меня только так — (2)
ЗаписьXML = Новый ЗаписьXML();
Параметры = Новый ПараметрыЗаписиXML(«cp866», «1.1», Истина, Истина);
ЗаписьXML.ОткрытьФайл(«D:\data.xml», Параметры);
ЗаписьXML.ЗаписатьОбъявлениеXML();
ЗаписьXML.Закрыть();
Создал файл. В файле
. если указываешь 1251 ругается.
(12) А если указать кодировку «windows1251» (т.е без дефиса), то тоже проглатывает.
а вот это вообще за пределами моего понимания: на англоязычном серванте с муи загрузка-выгрузка идет на ура в любой кодировке! А вот с англоязычной на рускоязычную ХР сабж. 🙁
(13) Так что работает? Открывается xml?
(15) не пробовал открывать.
Вот попробовал под win2003 английским с указанием кодировки именно «windows-1251».
Результат — .
Щас попробую сформировать чтонить простенькое и открыть.
открой в IE каком нидь )
(17) сформировал вот такой файлик
IE открыл. я думал ты спрашивал, открывает ли его 7.7
(17) а вот 7.7 под рукой нет. Проверить не могу, мож Air777 попробует.
Кстати, файл формировался под win2003 английским. Открывался в нем же и в Vista русской. Под вистой обработка по формированию файла вылетает с ошибкой — «Неверная кодировка»
+(19) В общем итого, мож кому пригодиться. Следующий код формирует файл xml в кодировке «windows-1251». IE его корректно открывает. Что в Висте что в 2003 сервере.
ЗаписьXML = Новый ЗаписьXML();
Параметры = Новый ПараметрыЗаписиXML(«windows-1251», «1.0», Истина, Истина);
ЗаписьXML.ОткрытьФайл(«D:\data.xml», Параметры);
ЗаписьXML.ЗаписатьОбъявлениеXML();
ЗаписьXML.ЗаписатьНачалоЭлемента(«Проверка»);
ЗаписьXML.ЗаписатьНачалоЭлемента(«Работает»);
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.Закрыть();