как узнать кодировку файла xml

Информационные технологии, интернет, веб программирование, IT, Hi-Tech, …

Кодировка XML

Здравствуйте, уважаемые посетители сайта okITgo.ru! Продолжаем рассматривать язык разметки XML.

XML документы могут содержать символы, не входящие в ASCII, например норвежские, или французские.

Чтобы избежать ошибок, указывайте кодировку XML, или сохраняйте XML файлы в формате Уникод.

Ошибки Кодировки XML

При загрузке XML документа, Вы можете получить две различные ошибки, указывающие на проблемы с кодировкой:

Неправильный символ был найден в текстовом содержимом.

Вы получаете эту ошибку, если ваш XML содержит символы, не входящие в ASCII, и файл был сохранен как однобайтовый ANSI (или ASCII) без указания кодировки.

Переключение из текущей кодировки в указанную кодировку не поддерживается.

Вы получаете эту ошибку, если ваш XML файл был сохранен как двухбайтовый Уникод (или UTF-16) с указанной однобайтовой кодировкой (например, Windows-1251,
ISO-8859-1, UTF-8).

Вы также получаете эту ошибку, если ваш XML файл был сохранен как однобайтовый ANSI (или ASCII) с указанной двухбайтовой кодировкой (например, UTF-16).

Блокнот Windows

Блокнот Windows сохраняет файлы как однобайтовые ANSI (ASCII) по умолчанию.

Если Вы выберите «Сохранить как…», Вы можете указать двухбайтовый Уникод (UTF-16).

Сохраните XML файл ниже как Уникод (заметьте, что документ не содержит атрибута кодировки):

Света
Вася
Позвони мне завтра!

Файл выше, note_encode_none_u.xml НЕ будет генерировать ошибку. Но если Вы укажете однобайтовую кодировку, то будет.

Кодировка (откройте файл), вызовет сообщение об ошибке:

Следующая кодировка (откройте файл), вызовет сообщение об ошибке:

Следующая кодировка (откройте файл), вызовет сообщение об ошибке:

Следующая кодировка (откройте файл), НЕ будет генерировать ошибку:

Выводы

Источник

Как узнать кодировку файла xml

Опытный
как узнать кодировку файла xml. pip. как узнать кодировку файла xml фото. как узнать кодировку файла xml-pip. картинка как узнать кодировку файла xml. картинка pip.как узнать кодировку файла xml. pip. как узнать кодировку файла xml фото. как узнать кодировку файла xml-pip. картинка как узнать кодировку файла xml. картинка pip.

Профиль
Группа: Участник
Сообщений: 309
Регистрация: 25.1.2006

Репутация: нет
Всего: нет

P.S. Смотрел класс InputSource. Там есть метод getEncoding. Но когда делаю так:

Код
InputSource iSource = new InputSource(new FileInputStream(«c:/1.xml»));
System.out.println(iSource.getEncoding());

Вывод на консоль: null.

Leprechaun Software Developer
как узнать кодировку файла xml. pip. как узнать кодировку файла xml фото. как узнать кодировку файла xml-pip. картинка как узнать кодировку файла xml. картинка pip.как узнать кодировку файла xml. pip. как узнать кодировку файла xml фото. как узнать кодировку файла xml-pip. картинка как узнать кодировку файла xml. картинка pip.как узнать кодировку файла xml. pip. как узнать кодировку файла xml фото. как узнать кодировку файла xml-pip. картинка как узнать кодировку файла xml. картинка pip.как узнать кодировку файла xml. pip. как узнать кодировку файла xml фото. как узнать кодировку файла xml-pip. картинка как узнать кодировку файла xml. картинка pip.

Профиль
Группа: Модератор
Сообщений: 15680
Регистрация: 24.3.2004

Репутация: 206
Всего: 534

В InputSource можно передать Reader, и тогда за кодировку уже будет отвечать Reader, на параметр пролога парсер обращать внимание не будет.

Вопрос только в том, как определить в какой кодировке файл? На мой взгляд это перекладывание проблемы с больной головы на здоровую. Если в прологе написано, что кодировка Cp-1251, то там и должна быть кодировка Cp-1251, а не какая нибудь другая. А если нет, то это невалидный XML, и это уже проблемы того кто его создавал.

Опытный
как узнать кодировку файла xml. pip. как узнать кодировку файла xml фото. как узнать кодировку файла xml-pip. картинка как узнать кодировку файла xml. картинка pip.как узнать кодировку файла xml. pip. как узнать кодировку файла xml фото. как узнать кодировку файла xml-pip. картинка как узнать кодировку файла xml. картинка pip.

Профиль
Группа: Участник
Сообщений: 309
Регистрация: 25.1.2006

Репутация: нет
Всего: нет

Цитата(LSD @ 29.3.2008, 19:58)
Вопрос только в том, как определить в какой кодировке файл? На мой взгляд это перекладывание проблемы с больной головы на здоровую. Если в прологе написано, что кодировка Cp-1251, то там и должна быть кодировка Cp-1251, а не какая нибудь другая. А если нет, то это невалидный XML, и это уже проблемы того кто его создавал.
Код
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.Vector;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.apache.log4j.Logger;
import org.apache.xml.resolver.CatalogManager;
import org.apache.xml.resolver.tools.CatalogResolver;
import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.InputSource;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.XMLReader;
import org.xml.sax.ext.Locator2;
import org.xml.sax.ext.Locator2Impl;
import org.xml.sax.helpers.DefaultHandler;

public class Props <
private static final String JAXP_SCHEMA_LANGUAGE = «http://java.sun.com/xml/jaxp/properties/schemaLanguage»;

private static final String W3C_XML_SCHEMA = «http://www.w3.org/2001/XMLSchema»;

private static final String JAXP_SCHEMA_SOURCE = «http://java.sun.com/xml/jaxp/properties/schemaSource»;

private static CatalogResolver xmlCatalogResolver;

private static final class CharsetHandler implements ContentHandler <
private Locator2Impl loc2impl;
private Locator2 fLocator;

public void setDocumentLocator(Locator locator) <
if (locator instanceof Locator2) <
fLocator = (Locator2) locator;
> else <
Logger.getLogger(this.getClass().getName()).error(
«There’s no getEncoding() method in »
+ locator.getClass().getName());
throw new RuntimeException(
«Используется старая версия xml-парсера, не поддерживающая SAX2 Extensions 1.1 (beta1)»);
>

public String getCharset() <
return loc2impl.getEncoding();
>
public String getVersion() <
return loc2impl.getXMLVersion();
>

// все остальные методы не используем
public void endDocument() throws SAXException <
>

public void startDocument() throws SAXException <
>

public void characters(char[] ch, int start, int length)
throws SAXException <
>

public void ignorableWhitespace(char[] ch, int start, int length)
throws SAXException <
>

public void endPrefixMapping(String prefix) throws SAXException <
>

public void skippedEntity(String name) throws SAXException <
>

public void processingInstruction(String target, String data)
throws SAXException <
>

public void startPrefixMapping(String prefix, String uri)
throws SAXException <
>

public void endElement(String namespaceURI, String localName,
String qName) throws SAXException <
>

public void startElement(String namespaceURI, String localName,
String qName, Attributes atts) throws SAXException <

private static CharsetHandler contentHandler = new CharsetHandler();
public static void main(String args[]) throws ParserConfigurationException, SAXException, FileNotFoundException, IOException <
ThreadLocal xmlReader = new ThreadLocal();
final ThreadLocal validationLogWarnings = new ThreadLocal();
final ThreadLocal validationLogErrors = new ThreadLocal();
final ThreadLocal validationLogFatalErrors = new ThreadLocal();
final int stopValidationOnError = 5;

System.out.println(«begin. «);
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser;

factory.setValidating(true);
saxParser = factory.newSAXParser();
saxParser.setProperty(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);

XMLReader reader = saxParser.getXMLReader();
reader.setFeature(«http://apache.org/xml/features/allow-java-encodings»,true);
CatalogManager catalogManager = new CatalogManager();
catalogManager.setCatalogFiles(«c:/CatalogManager.properties»);
// System.out.println(«class name=»+catalogManager.getCatalogClassName());

// catalogManager.setCatalogFiles(«c:/CatalogManager.properties»);
Vector v = catalogManager.getCatalogFiles();
System.out.println(catalogManager.getPrivateCatalog().getCurrentBase());
Enumeration enumer = v.elements();

xmlCatalogResolver = new CatalogResolver();

reader.setErrorHandler(new DefaultHandler() <
private int errorNumber = 0;

public void warning (SAXParseException e) throws SAXException <
((List) validationLogWarnings.get()).add(e);
>
public void error(SAXParseException e) throws SAXException <
((List) validationLogErrors.get()).add(e);

if (stopValidationOnError!=-1 && ++errorNumber>=stopValidationOnError)
throw e;
>
public void fatalError (SAXParseException e) throws SAXException <
((List) validationLogFatalErrors.get()).add(e);
throw e;
>
>);
reader.setContentHandler(contentHandler);
xmlReader.set(reader);
validationLogWarnings.set(new ArrayList());
validationLogErrors.set(new ArrayList());
validationLogFatalErrors.set(new ArrayList());
((XMLReader) xmlReader.get()).parse(new InputSource(new FileInputStream(«c:/1.xml»)));
String docEncoding = contentHandler.getCharset();
System.out.println(«docEncoding = «+ docEncoding);
System.out.println(«Документ соответствует схеме»);
>
>

как узнать кодировку файла xml. p pm on. как узнать кодировку файла xml фото. как узнать кодировку файла xml-p pm on. картинка как узнать кодировку файла xml. картинка p pm on. как узнать кодировку файла xml. p email on. как узнать кодировку файла xml фото. как узнать кодировку файла xml-p email on. картинка как узнать кодировку файла xml. картинка p email on. как узнать кодировку файла xml. p www on. как узнать кодировку файла xml фото. как узнать кодировку файла xml-p www on. картинка как узнать кодировку файла xml. картинка p www on. как узнать кодировку файла xml. p im on. как узнать кодировку файла xml фото. как узнать кодировку файла xml-p im on. картинка как узнать кодировку файла xml. картинка p im on. как узнать кодировку файла xml. p icq on. как узнать кодировку файла xml фото. как узнать кодировку файла xml-p icq on. картинка как узнать кодировку файла xml. картинка p icq on. как узнать кодировку файла xml. p aim on. как узнать кодировку файла xml фото. как узнать кодировку файла xml-p aim on. картинка как узнать кодировку файла xml. картинка p aim on. как узнать кодировку файла xml. p yim on. как узнать кодировку файла xml фото. как узнать кодировку файла xml-p yim on. картинка как узнать кодировку файла xml. картинка p yim on. как узнать кодировку файла xml. p msn on. как узнать кодировку файла xml фото. как узнать кодировку файла xml-p msn on. картинка как узнать кодировку файла xml. картинка p msn on. как узнать кодировку файла xml. p skype on. как узнать кодировку файла xml фото. как узнать кодировку файла xml-p skype on. картинка как узнать кодировку файла xml. картинка p skype on. как узнать кодировку файла xml. p gtalk on. как узнать кодировку файла xml фото. как узнать кодировку файла xml-p gtalk on. картинка как узнать кодировку файла xml. картинка p gtalk on. как узнать кодировку файла xml. p jabber on. как узнать кодировку файла xml фото. как узнать кодировку файла xml-p jabber on. картинка как узнать кодировку файла xml. картинка p jabber on. как узнать кодировку файла xml. p report on. как узнать кодировку файла xml фото. как узнать кодировку файла xml-p report on. картинка как узнать кодировку файла xml. картинка p report on. как узнать кодировку файла xml. p delete on. как узнать кодировку файла xml фото. как узнать кодировку файла xml-p delete on. картинка как узнать кодировку файла xml. картинка p delete on. как узнать кодировку файла xml. p edit on. как узнать кодировку файла xml фото. как узнать кодировку файла xml-p edit on. картинка как узнать кодировку файла xml. картинка p edit on. как узнать кодировку файла xml. p quick quote on. как узнать кодировку файла xml фото. как узнать кодировку файла xml-p quick quote on. картинка как узнать кодировку файла xml. картинка p quick quote on. как узнать кодировку файла xml. p quote on. как узнать кодировку файла xml фото. как узнать кодировку файла xml-p quote on. картинка как узнать кодировку файла xml. картинка p quote on. как узнать кодировку файла xml. p show on. как узнать кодировку файла xml фото. как узнать кодировку файла xml-p show on. картинка как узнать кодировку файла xml. картинка p show on. как узнать кодировку файла xml. p hide on. как узнать кодировку файла xml фото. как узнать кодировку файла xml-p hide on. картинка как узнать кодировку файла xml. картинка p hide on. как узнать кодировку файла xml. p tofaq on. как узнать кодировку файла xml фото. как узнать кодировку файла xml-p tofaq on. картинка как узнать кодировку файла xml. картинка p tofaq on.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »

[ Время генерации скрипта: 0.1112 ] [ Использовано запросов: 21 ] [ GZIP включён ]

Источник

Как узнать кодировку xml-файла

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Как указать кодировку XML документа?
Что нужно чтобы IE не ругался на русские буквы, загружая XML-документ?

Как узнать кодировку файла?
Народ возникла проблема в фаиле есть данные: but1=1 but2=1 Path1=../../../../1.exe

Как изменить кодировку XML-файла?
Добрый день! Подскажите, как изменить кодировку xml-файла Этот код работает правильно, но только.

Как узнать кодировку файла средствами php?
Как узнать кодировку файла средствами php? Добавлено через 1 час 57 минут В файле 1.txt.

Добавлено через 54 минуты
Мда. Оказалось настолько все просто как узнать кодировку файла xml. fool. как узнать кодировку файла xml фото. как узнать кодировку файла xml-fool. картинка как узнать кодировку файла xml. картинка fool.. Открываем файл с помощью Notepad++. Нажимаем Кодировки.Если кодировка указана явно, то ее не покажут на вкладке. Если она не указана, то ее определят и обозначат кружочком! как узнать кодировку файла xml. smile3. как узнать кодировку файла xml фото. как узнать кодировку файла xml-smile3. картинка как узнать кодировку файла xml. картинка smile3.Прелесть!

И кстати: здесь на форуме запрещено постить ссылки на другие форумы

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Как узнать текущую кодировку файла в Sublime Text 3?
Как узнать текущую кодировку файла в Sublime Text 3?

Задать кодировку чтения у xml файла
Такая проблема xml файл в кодировке UTF-7. Читаю его с помощью XmlDocument doc = new.

Как узнать имя элемента схемы XSD при построчном чтении файла xml
Здравствуйте! Пишу программу которая читает xml и при помощи его схемы xsd должна вытащить еще и.

Как узнать кодировку пульта ДУ
Собираю самодельный усилитель Miko16+TDA7439+2*LM2886 все это должно управляться при помощи пульта.

Источник

Злой XML с двумя кодировками

Какие кодировки работают в XML

Спецификация обязывает парсеры понимать две кодировки: UTF-8 и UTF-16. Парсеры поддерживают больше, но для атаки хватит и этих.

UTF-8 и UTF-16 отображают одни и те же символы — из таблицы Юникода.

Разница между кодировками в том, как они хранят номер символа.

UTF-8
Один символ — от одного до четырех байт.

Код символа хранится по шаблону:

Количество байтЗначащих битБинарный код
170xxxxxxx
211110xxxxx 10xxxxxx
3161110xxxx 10xxxxxx 10xxxxxx
42111110xxx 10xxxxxx 10xxxxxx 10xxxxxx

Кодировать символы избыточно нельзя. Самый короткий способ — верный.

UTF-16
Один символ — два или четыре байта.

Код символа хранится по шаблону:

Количество байтЗначащих битБинарный код
216xxxxxxxx xxxxxxxx
4 *20110110xx xxxxxxxx 110111xx xxxxxxxx

* Из кода предварительно вычитается 0x010000

Запись символа с помощью 4-х байт называется суррогатной парой. Пара состоит из двух обычных символов, но из зарезервированного диапазона: от U+D800 до U+DFFF. Половинки пары сами по себе недействительны.

UTF-16 бывает двух видов: UTF-16BE и UTF-16LE (big-endian / little-endian). В них разный порядок байт.

Big-endian — «естественный» порядок байт, как у арабских цифр.
Little-endian — обратный порядок байт.

Примеры записи символов в UTF-16BE и UTF-16LE

КодировкаСимволБинарный код
UTF-16BEU+003F00000000 00111111
UTF-16LEU+003F00111111 00000000
UTF-16BE *U+1D6E511011000 00110101 11011110 1100101
UTF-16LE *U+1D6E500110101 11011000 11100101 11011110

* В четырех-байтовых символах группы из 2-х байт переворачиваются отдельно. Это сделано для обратной совместимости с Unicode 1.0, где все символы состояли только из двух байт.

Как парсеры определяют кодировку

Парсеры определяют кодировку четырьмя способами:

Внешняя информация о кодировке
В некоторых сетевых протоколах есть специальное поле для кодировки:

как узнать кодировку файла xml. image loader. как узнать кодировку файла xml фото. как узнать кодировку файла xml-image loader. картинка как узнать кодировку файла xml. картинка image loader.
Передача кодировки в протоколе WebDav

Чаще всего это протоколы, которые построены по стандарту MIME: например SMTP, HTTP и WebDAV.

Byte Order Mark (BOM)

BOM — символ с кодом U+FEFF.

Если парсер найдет его в начале, то он определит кодировку по тому, как он записан.

Источник

Кодировка в XML документе

XML документы могут содержать символы в различных международных кодировках.

Чтобы не возникало ошибок, необходимо указывать, какая кодировка используется в XML документе, либо сохранять файл в универсальной кодировке UTF-8.

Символьная кодировка

Символьная кодировка определяет уникальный бинарный код для различных символов, используемых в документе.

В компьютерных терминах символьную кодировку также называют символьным набором, символьной раскладкой, кодовым набором и кодом страницы.

Юникод

Юникод — это промышленный стандарт для символьной кодировки текстового документа. Он определяет (почти) все возможные международные символы по именам и числам.

Юникод имеет две разновидности: UTF-8 и UTF-16.

UTF = формат преобразования Юникода (анг. Unicode Transformation Format).

UTF-8 использует один байт (8 бит) для представления общепринятых символов и два (или три) байта для всех остальных символов.

UTF-16 использует два байта (16 бит) для большинства символов и три байта для всего остального.

UTF-8 — стандартная кодировка символов в сети Интернет.

UTF-8 считается кодировкой по умолчанию в HTML-5, CSS, JavaScript, PHP, SQL и XML.

Кодировка XML документа

Первая строка в XML документе называется прологом:

Пролог является необязательным и, как правило, содержит номер версии XML.

Кроме этого, он может содержать информацию о кодировке XML документа. Следующий пролог определяет кодировку UTF-8:

Стандартизация XML устанавливает, что все приложения XML должны понимать кодировки UTF-8 и UTF-16.

UTF-8 является кодировкой по умолчанию для XML документов без информации о кодировке.

Кроме этого, большинство систем приложений XML работают с такими кодировками, как ISO-8859-1, Windows-1252 и ASCII.

Ошибки XML

Очень часто XML документы создаются на одном компьютере, на сервер выгружается с другого, а в браузере отображаются на третьем компьютере.

Если кодировка некорректно интерпретируется всеми тремя компьютерами, то браузер отобразит бессмысленный набор символов, либо вообще выдаст сообщение об ошибке.

Наилучшим выбором в этом случае будет использование кодировки UTF-8. UTF-8 позволяет отображать практически все международные символы, и, кроме этого, она считается кодировкой по умолчанию, если не указана другая кодировка.

Заключение

Когда вы пишите XML документ:

Источник

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

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