Кодировка файла xml windows 1251

forum.clarionlife.net

Место общения программистов, форум разработчиков БД на Clarion

XML-файлы в кодовой таблице Windows-1251

Сообщение Гость » 27 Август 2004, 13:27

Честно говоря, не знаю, кому может пригодиться .

Мне надо было генерировать (для заказчика) и читать (от заказчика) XML в кодовой таблице Window-1251.

1. Опишем русскую кодировку в CPXML.Inc

2. И заставим выводить данные в windows-1251 (CpXML.clw)

DOMToXMLFile procedure(*Document doc, string path, , UNSIGNED Format = Format:AS_IS)

3. После чего получим XML-файл (например, в Example\XMLParse) в кодировке Windows-1251, вполне отображаемый браузером. Но встаёт другая проблема — эти файлы не читаются кларионовским парсером (Шаблон ‘View XML File’ просто падает при загрузке). Ну что ж, тем хуже для парсера. Возьмём шестнадцатеричный редактор, найдём в модуле C60cpxml.dll текст ‘ISO-8859-1’, заменим на ‘WINDOWS-1251’ и добавим в конец ‘ ‘ .

4. Вопрос с документами в UTF-8 не рассматривается

Когда-то мне пришлось более плотнее исследовать C6 XML Support. Сделал точно такие же изменения как Вы.

Я не понял, тогда в этом случае все O’K, что ли?

С уважением, Семен Попов

А за это отвечает процедура CheckXMLName из CpXML.clw . Можно поставить в первую строку Return(0) — и будут приниматься любые теги

С уважением, Семен Попов

По крайней мере, файлы, созданные обычным текстовым редактором или сформированные программой (в том числе без использования интерфейса) читаются, только и всего. Просто похоже, что используемая библиотека в принципе не поддерживает кодировок, отличных от буржуинских, а это самый простой путь заставить это делать.

Сообщение Гость » 27 Август 2004, 13:34

Кстати, вместо «WINDOWS-1251» можно использовать «MS1251» — такой синтаксис тоже понимают все системы.
Этим самым экономится длина строки (ISO-8859-1 — 10 знаков, WINDOWS-1251 — 12 знаков) при бинарном рпедактировании.

Увы, это строка проверяется при вводе, а не выводе Поэтому приходится пожертвовать следующим полем — US-ASCII .

Читайте также:  Идет инициализация windows 10 обновление

Ну, у Клариона я не проверял, к сожалению.
У меня был аналогичный случай по основной работе (программные продукты Documentum).
Мы тоже очень долго мучились с проблемой замены в бинарном файле «ISO_8859-1» на название русской кодировки. Мучились как раз из-за ттго, что нужно было уложиться «байт в байт». Проверяли все возможные варианты синтаксиса (кстати, кроме «Windows-1251» еще есть варианты «1251», «CP-1251», «ANSI-1251» и другие).
В итоге долгих экспериментов выяснилось, что «MS1251» читается даже, например, Интернет-Эксплорером.
Собственно говоря, можете проверить — замените в метатеге какой-нибудь HTML-страницы «Windows-1251» на «MS1251» — бедет работать.

Да речь не о Кларионе. Просто для создания DLL использовалась некая сишная библиотека. А в ней есть список допустимый кодовых таблиц, и Windows-1251 в ней НЕТ. Происходит чтение XML и поиск наименования кодовой страницы в списке. Ещё раз — это важно при ЧТЕНИИ XML-файла через кларионовский Support.

И если файл начинается на

,
то именно ‘WINDOWS-1251’ и должен быть в программе. Собственно, путём двухдневных хакерских «экспериментов» и был найден такой вариант.
Возможно, что можно подменить и другие текстовые строки. Кто займётся?

Кстати, попробовал CP-1251 и MS1251, браузер показал ошибку . Файл прилагается.

А вот список кодовых таблиц кириллицы из MSDN

Имя обозначение (алиасы)
Cyrillic (DOS) cp866 ( ibm866 )
Cyrillic (ISO) iso-8859-5 (csISOLatin5, csISOLatinCyrillic, cyrillic, ISO_8859-5, ISO_8859-5:1988, iso-ir-144, l5)
Cyrillic (KOI8-R) koi8-r (koi8-ru)
Cyrillic (KOI8-U) koi8-u
Cyrillic (Windows) windows-1251 (x-cp1251)

Действительно, выдает ошибку.
Получается, что для обычного HTML это работает, а для XML — нет.
Ну, Билл Гейтс — все запутал!

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

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

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

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

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

Читайте также:  Системные требования для windows 10 x86

А вот это посмотрите: http://www.sql.ru/forum/498506. -pogrammno
Люди как-то с помощью substr определяют.

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

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

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

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

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

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

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

Кодировка XML-файла для правильной обработки кириллицы

необходио загрузить содержимое xml файла в переменную для дальнейшей работы с ним, компилятор ругается на кодировку в xml файле, подскажите как считать данные с xml файла? перекодировать его надо или что?
P.S. компилятор ругается на русские буквы в файле xml

Вложения

xml.rar (5.6 Кб, 5 просмотров)

Как добавить инструкции обработки в начало файла xml?
Записываю данные с dataset в xml следующим образом: DataTable dt = new DataTable(); DataSet ds.

Правильная кодировка для кириллицы
cout 5

Решение

Решение

Решение

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Кодировка Юникод при создании XML-файла
В блокноте Windows в окне «Сохранить как» есть кодировки ANSI, Юникод, Юникод (Big Endian), UTF-8. .

Qt кодировка кириллицы
Всё никак могу разобраться с кодировкой. Необходимо объекту b присвоить символ б, но приведённый.

Кодировка кириллицы
Всем Доброго времени суток.Люди помогите разобраться а то после 2х часов GooglA я уже вообще ничего.

Читайте также:  Что такое служба windows license manager

Пресловутая кодировка кириллицы
Здравствуйте, есть такой код #include #include // для SetConsoleCP().

XML — проблемы с кодировкой

через XDTO создаю текст XML
потом пишу его в файл и проверяю на соответствие схеме

ЗаписьXML = Новый ЗаписьXML;

ЗаписьXML.УстановитьСтроку();
ЗаписьXML.ЗаписатьОбъявлениеXML();
ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, КорневойРаздел);

это возвращает получившийся текст ХМЛ в реквизит документа типа Строка(0)

ИмяФайла = ПолучитьИмяВременногоФайла(«xml»);
ИмяФайлаСхемы = ПолучитьИмяВременногоФайла(«xsd»);

ФайлРеестра = Новый ТекстовыйДокумент;
ФайлРеестра.УстановитьТекст(Объект.ТекстВыгрузки);
ФайлРеестра.Записать(ИмяФайла,»windows-1251″);

ФайлСхемы = Новый ТекстовыйДокумент;
ФайлСхемы.УстановитьТекст(Объект.ТекстСхемыДокумента);
ФайлСхемы.Записать(ИмяФайлаСхемы,»windows-1251″);

Попытка
Схема=Новый COMОбъект(«MSXML2.XMLSchemaCache.6.0»);
Исключение
Сообщить(«Не удалось создать объект XMLSchemaCache (возможно, не установлен MSXML 6)»);
Возврат;
КонецПопытки;

Попытка
Схема.add(«»,ИмяФайлаСхемы);
Исключение
Сообщить(«Не удалось подключить схему: «+ИмяФайлаСхемы);
Схема=Неопределено;
Возврат;
КонецПопытки;

Попытка
ДОМ=Новый COMОбъект(«MSXML2.DOMDocument.6.0»);
Исключение
Сообщить(«Не удалось создать объект DOMDocument (возможно, не установлен MSXML 6)»);
Схема=Неопределено;
Возврат;
КонецПопытки;

ДОМ.schemas=Схема;
ДОМ.async=Ложь;
ДОМ.validateOnParse=Истина;
ДОМ.resolveExternals=Истина;
Если ВыводитьВсеОшибки Тогда
ДОМ.SetProperty(«MultipleErrorMessages»,Истина);
КонецЕсли;
ДОМ.load(ИмяФайла);

Если (ДОМ.parseError.errorCode<>0) Тогда
// ошибки при проверке правильности
Сообщить(«При проверке по схеме выявлены ошибки!»);
Если ВыводитьВсеОшибки Тогда
Для каждого parseError из ДОМ.parseError.AllErrors Цикл
Сообщить(parseError.reason);
Сообщить(parseError.srcText);
КонецЦикла;
Иначе
Сообщить(ДОМ.parseError);
КонецЕсли;
Иначе
Сообщить(«Файл успешно прошёл проверку по схеме!»);
РезПроверки=Истина;
КонецЕсли;

получаю ошибку на первом же атрибуте где встречается кириллица:
В текстовом комментарии обнаружен недопустимый знак.

Строка windows-1251 записана в xml файл ISO-8859-1. Как получить UTF-8 имея доступ только к файлу?

Строка изначально в кодировке windows-1251 записывается в xml файл с кодировкой ISO-8859-1.
Как перевести строку в UTF-8 имея доступ только к файлу ?
Так не работает:
$str = iconv(«ISO-8859-1», «UTF-8», $str);
Так тоже:
$str = iconv(«ISO-8859-1», «windows-1251//IGNORE», $str);
$str = iconv(«windows-1251», «UTF-8», $str);

online-decoder.com/ru нормально преобразует эту строку указывая кодировки из ISO-8859-1 в windows-1251.

  • Вопрос задан 18 мар.
  • 66 просмотров

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

ТС, забудьте про ISO. Это просто надпись в файле, никакого отношения к вашей строчке не имеющая. У вас строчка в виндовой кодировке, и ее нужно перевести в Уникод. Вот и все.

Adamos, да, вы правы двойную. Брал заготовку с stackoverflow для перевода xml в массив:

А json_decode и json_encode работает только с UTF-8.

Оцените статью