Как проверить кодировку файла xml
Перейти к содержимому

Как проверить кодировку файла xml

  • автор:

Как проверить кодировку файла 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.Закрыть();

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *