Файл поврежден или ФНС не регламентирует этот формат
Мы не можем распознать и проверить этот файл. К нерегламентируемым форматам относятся протокол согласования цен, реестр сертификатов и документы в произвольном формате.
Неверный формат файла
Загрузите файл в формате .xml
Неверная кодировка файла
Загрузите файл с кодировкой windows-1251
Невозможно определить тип xml-файла
В файле необходимо добавить атрибут «КНД». Значение атрибута зависит от типа документа:
для УПД
Титул продавца | 1115131 |
Титул покупателя | 1115126 |
для УКД
Титул продавца | 1115127 |
Титул покупателя | 1115128 |
Корректировочный счёт-фактура | 1115108 |
для акта
Титул исполнителя | 1175006 |
Титул заказчика | 1175007 |
для Торг-12
Титул отправителя | 1175004 |
Титул получателя | 1175005 |
Извещение о получении электронного документа | 1115110 |
Уведомление об уточнении электронного документа | 1115113 |
Если вам нужна помощь при написании XML-файлов, подключайтесь к Диадоку и мы проведем интеграцию с вашей учетной системой
Подключиться
Здравствуйте, господа!
Честно говоря, не знаю, кому может пригодиться …
Мне надо было генерировать (для заказчика) и читать (от заказчика) XML в кодовой таблице Window-1251.
1. Опишем русскую кодировку в CPXML.Inc
Код: Выделить всё
XMLEnc EQUATE(STRING)
XMLEnc:UTF8 EQUATE('UTF-8')
XMLEnc:UTF16 EQUATE('UTF-16')
XMLEnc:ISO88591 EQUATE('ISO-8859-1')
XMLEnc:WIN1251 EQUATE('WINDOWS-1251')
2. И заставим выводить данные в windows-1251 (CpXML.clw)
DOMToXMLFile procedure(*Document doc, string path, <*CSTRING newLine>, UNSIGNED Format = Format:AS_IS)
Код: Выделить всё
ret BYTE
CODE
IF omitted(3)
!ret=DOMToXMLFile(doc,path,,Format,XMLEnc:UTF8)
ret=DOMToXMLFile(doc,path,,Format,XMLEnc:WIN1251)
ELSE
!ret=DOMToXMLFile(doc,path,newLine,Format,XMLEnc:UTF8)
ret=DOMToXMLFile(doc,path,newLine,Format,XMLEnc:WIN1251)
END
RETURN ret
3. После чего получим XML-файл (например, в ExampleXMLParse) в кодировке Windows-1251, вполне отображаемый браузером. Но встаёт другая проблема — эти файлы не читаются кларионовским парсером (Шаблон ‘View XML File’ просто падает при загрузке). Ну что ж, тем хуже для парсера. Возьмём шестнадцатеричный редактор, найдём в модуле C60cpxml.dll текст ‘ISO-8859-1’, заменим на ‘WINDOWS-1251’ и добавим в конец ‘<0>’ .
4. Вопрос с документами в UTF-8 не рассматривается
—————————————
C уважением,
Юрий Философов,
Главный программист
Корпорация «Диполь», Саратов
E-mail yufil@tacis-dipol.ru (служ)
yufil@mail.ru (дом)
ICQ#75924439
(Добавление)
Когда-то мне пришлось более плотнее исследовать C6 XML Support. Сделал точно такие же изменения как Вы.
3. После чего получим XML-файл (например, в ExampleXMLParse) в кодировке Windows-1251, вполне отображаемый браузером.
Когда получил этот результат — обрадовался. Но попробовал, используя их классы создать свой XML, и очень разочаровался. Оказывается, классы напрочь отказываются работать с русскими тегами.
Но встаёт другая проблема — эти файлы не читаются кларионовским парсером (Шаблон ‘View XML File’ просто падает при загрузке). Ну >что ж, тем хуже для парсера.
Может проблема в кодовой странице, о которой писал Сергей Артюшенков.
Возьмём шестнадцатеричный редактор, найдём в модуле C60cpxml.dll текст ‘ISO-8859-1’, заменим на ‘WINDOWS-1251’ и добавим в конец ‘<0>’ .
Я не понял, тогда в этом случае все O’K, что ли?
С уважением, Семен Попов
Когда получил этот результат — обрадовался. Но попробовал, используя их классы создать свой XML, и очень разочаровался. Оказывается, классы напрочь отказываются работать с русскими тегами.
Пофиксил. Теперь работают
Когда получил этот результат — обрадовался. Но попробовал, используя их классы создать свой XML, и очень разочаровался. Оказывается, классы напрочь отказываются работать с русскими тегами.
А за это отвечает процедура CheckXMLName из CpXML.clw . Можно поставить в первую строку Return(0) — и будут приниматься любые теги
—————————————
C уважением,
Юрий Философов
Спасибо, попробую.
С уважением, Семен Попов
Когда-то мне пришлось более плотнее исследовать C6 XML Support. Сделал точно такие же изменения как Вы.
Это естественно. Но сгенерированные файлы не читались через Support. Потратил время, чтобы понять причину и добить, как заставить их читаться. О чём и рассказал
Я не понял, тогда в этом случае все O’K, что ли?
По крайней мере, файлы, созданные обычным текстовым редактором или сформированные программой (в том числе без использования интерфейса) читаются, только и всего. Просто похоже, что используемая библиотека в принципе не поддерживает кодировок, отличных от буржуинских, а это самый простой путь заставить это делать…
… исправленные модули для CW6.1 на http://www.tacis-dipol.ru/fil/XML1251.zip
—————————————
C уважением,
Юрий Философов
Написал: ClaList(2)
|
|||
malton
03.07.07 — 20:10 |
всем хай! Столкнулся проблемой. Решила контора торговать через инет и заказала разработку инет-магазина. Фирма, которая будет мастерить и поддерживать все это дело требует категорически выгрузку из базы рисовать в формате «windows-1251». А как? если по синтаксису можна создать xml-файл тока в юникоде(«UTF-16″,»UTF-8»). Причем эти крендели заявляют что ос unix такая умная, что ANSI только и понимает, а юникод не переваривает, мол это жуткий анахронизм. |
||
Оллрайт
1 — 03.07.07 — 20:33 |
v8: Файл не содержит маркера кодировки UTF8 |
||
Оллрайт
2 — 03.07.07 — 20:36 |
Книга знаний: Перекодировщик из UTF-8 в Windows-1251 Romix говорит: Вызов win1251_utf8.exe Файл1.xml Файл2.xml» |
||
malton 3 — 03.07.07 — 21:07 |
Большое спасибо! выкачал перекодировщик и вот рабочий вариант(все файлы по умолчанию в каталоге бд). ОбъектXML = Новый ЗаписьXML; |
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Dogarik 0 / 0 / 0 Регистрация: 21.04.2015 Сообщений: 35 |
||||
1 |
||||
05.12.2019, 15:47. Показов 7483. Ответов 5 Метки xml (Все метки)
Доброго времени суток. Столкнулся с проблемой. Не могу при создании XML файла сменить кодировку. Суть задачи следующая. Есть список в TXT файле из которого необходимо создать XML определенной структуры с кодировкой «Windows-1251». Не знаю как при создании файла установить нужную мне кодировку. Все время устанавливается «utf-8». P.S. Работаю в VS2019.
Миниатюры
__________________
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
05.12.2019, 15:47 |
5 |
92 / 62 / 31 Регистрация: 22.12.2018 Сообщений: 121 |
|
05.12.2019, 15:59 |
2 |
Dogarik, нет возможности проверить совет, но попробуйте так
1 |
Dogarik 0 / 0 / 0 Регистрация: 21.04.2015 Сообщений: 35 |
||||||||||||
05.12.2019, 16:37 [ТС] |
3 |
|||||||||||
К сожалению не помогло.
но эффекта никакого….ну или я криворук… Текущий код такой
На выходе:
0 |
dazering 92 / 62 / 31 Регистрация: 22.12.2018 Сообщений: 121 |
||||||||
05.12.2019, 17:09 |
4 |
|||||||
Сообщение было отмечено Dogarik как решение РешениеDogarik, вот так надо декларировать =)
Если на фрейморке, то ничего не надо делать. Если на коре, то надо добавить NuGet пакет System.Text.Encoding.CodePages и затем прописать
1 |
Ourn 68 / 38 / 11 Регистрация: 07.11.2019 Сообщений: 136 |
||||||||
05.12.2019, 17:12 |
5 |
|||||||
Не обещаю, что поможет, но можно попробовать сделать так 1. Устанавливаете nuget пакет System.Text.Encoding.CodePages — без него не будут доступны кодировки типа 1251.
3. Привожу пример метода, который мне лень переделывать под запись в файл — его задача сформировать строку в нужной кодировке
1 |
0 / 0 / 0 Регистрация: 21.04.2015 Сообщений: 35 |
|
06.12.2019, 17:36 [ТС] |
6 |
Действительно, работаю в Core 2.1. Сделал все, как подсказали dazering и Ourn. Сработало. Премного благодарен за потраченное время))) P.S. Задача решена. Тему можно закрывать.
0 |
Содержание
- Информационные технологии, интернет, веб программирование, IT, Hi-Tech, …
- Кодировка XML
- Ошибки Кодировки XML
- Блокнот Windows
- Выводы
- I. Коротко об XML¶
- Введение в XML¶
- Структура XML¶
- Правила синтаксиса (Валидность)¶
- Сущности¶
- Поиск информации в XML файлах (XPath)¶
- Кодировки¶
- XSD схема¶
- Кодировка в XML документе
- Символьная кодировка
- Юникод
- Кодировка XML документа
- Ошибки XML
- Заключение
- forum.clarionlife.net
- XML-файлы в кодовой таблице Windows-1251
- Как изменить кодировку текстового файла на UTF-8 или Windows 1251
- Блокнот Windows
- Notepad++
- Akelpad
Информационные технологии, интернет, веб программирование, 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 НЕ будет генерировать ошибку. Но если Вы укажете однобайтовую кодировку, то будет.
Кодировка (откройте файл), вызовет сообщение об ошибке:
Следующая кодировка (откройте файл), вызовет сообщение об ошибке:
Следующая кодировка (откройте файл), вызовет сообщение об ошибке:
Следующая кодировка (откройте файл), НЕ будет генерировать ошибку:
Выводы
Источник
I. Коротко об XML¶
Введение в XML¶
XML ( англ. eXtensible Markup Language) — расширяемый язык разметки, предназначенный для хранения и передачи данных.
Простейший XML-документ выглядит следующим образом:
Документ XML состоит из элементов (elements). Элемент начинается открывающим тегом (start-tag) в угловых скобках, затем идет содержимое (content) элемента, после него записывается закрывающий тег (end-teg) в угловых скобках.
Некоторые элементы, не содержащие значений, допустимо записывать без закрывающего тега. В таком случае символ / ставится в конце открывающего тега:
Структура XML¶
XML документ должен содержать корневой элемент. Этот элемент является «родительским» для всех других элементов.
Все элементы в XML документе формируют иерархическое дерево. Это дерево начинается с корневого элемента и разветвляется на более низкие уровни элементов.
Все элементы могут иметь подэлементы (дочерние элементы):
Правила синтаксиса (Валидность)¶
Основные правила синтаксиса XML:
Открывающий и закрывающий теги должны определяться в одном регистре:
Сущности¶
Некоторые символы в XML имеют особые значения и являются служебными. Если вы поместите, например, символ внутри XML элемента, то будет сгенерирована ошибка, так как парсер интерпретирует его, как начало нового элемента.
Также ошибка будет сгенерирована и в слудющем примере, если название организации взять в обычные кавычки (английские двойные):
Чтобы ошибки не возникали, нужно заменить символ на его сущность. В XML существует 5 предопределенных сущностей:
Сущность | Символ | Значение |
---|---|---|
меньше, чем | ||
> | > | больше, чем |
& | & | амперсанд |
‘ | ‘ | апостроф |
« | « | кавычки |
Таблица I.1 — Сущности ¶
Только символы и & строго запрещены в XML. Символ > допустим, но лучше его всегда заменять на сущность.
Таким образом, корректными будут следующие формы записей:
В последнем примере английские двойные кавычки заменены на французские кавычки («ёлочки»), которые не являются служебными символами.
Поиск информации в XML файлах (XPath)¶
XPath ( англ. XML Path Language) — язык запросов к элементам XML-документа. XPath расширяет возможности работы с XML.
XML имеет древовидную структуру. В документе всегда имеется корневой элемент (инструкция version=”1.0”?> к дереву отношения не имеет). У элемента дерева всегда существуют потомки и предки, кроме корневого элемента, у которого предков нет, а также тупиковых элементов (листьев дерева), у которых нет потомков. Каждый элемент дерева находится на определенном уровне вложенности (далее — «уровень»). У элементов на одном уровне бывают предыдущие и следующие элементы.
Это очень похоже на организацию каталогов в файловой системе, и строки XPath, фактически, — пути к «файлам» — элементам. Рассмотрим пример списка книг:
XPath запрос /bookstore/book/price вернет следующий результат:
Чтобы получить больше информации, необходимо модифицировать запрос //book[title[@lang=»it»]] вернет:
В приведенной ниже таблице представлены некоторые выражения XPath и результат их работы:
Кодировки¶
И еще один важный момент, который стоит рассмотреть — кодировки. Существует множество кодировок, о них подробнее можно прочитать в статье Набор символов.
В XML файле кодировка объявляется в декларации:
Часто можно столкнуться с ситуацией, когда текстовый редаткор некорректно распознает кодировку и отображает кракозябры. В такой случае, необходимо выбрать кодировку вручную, для этого выполните:
Программа | Кодировка |
---|---|
Notepad++ | «Документ → Кодировка» |
Geany | «Документ → Установить кодировку» |
Firefox | «Вид → Кодировка» |
Chrome | «Настройка → Дополнительные инструменты → Кодировка» |
Таблица I.3 — Смена кодировки в разных программах ¶
Если ничего не помогает, вполне возможно, что файл был поврежден.
XSD схема¶
XML Schema — язык описания структуры XML-документа, его также называют XSD. Как большинство языков описания XML, XML Schema была задумана для определения правил, которым должен подчиняться документ. Но, в отличие от других языков, XML Schema была разработана так, чтобы её можно было использовать в создании программного обеспечения для обработки документов XML.
После проверки документа на соответствие XML Schema читающая программа может создать модель данных документа, которая включает:
Каждый элемент в этой модели ассоциируется с определённым типом данных, позволяя строить в памяти объект, соответствующий структуре XML-документа. Языкам объектно-ориентированного программирования гораздо легче иметь дело с таким объектом, чем с текстовым файлом.
Подробнее об XSD смотрите:
Примером использования XSD cхем может служить электронная отчетность:
Источник
Кодировка в 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 документ:
Источник
forum.clarionlife.net
Место общения программистов, форум разработчиков БД на Clarion
XML-файлы в кодовой таблице Windows-1251
Сообщение Гость » 27 Август 2004, 13:27
Мне надо было генерировать (для заказчика) и читать (от заказчика) XML в кодовой таблице Window-1251.
1. Опишем русскую кодировку в CPXML.Inc
2. И заставим выводить данные в windows-1251 (CpXML.clw)
Когда-то мне пришлось более плотнее исследовать C6 XML Support. Сделал точно такие же изменения как Вы.
Я не понял, тогда в этом случае все O’K, что ли?
С уважением, Семен Попов
С уважением, Семен Попов
По крайней мере, файлы, созданные обычным текстовым редактором или сформированные программой (в том числе без использования интерфейса) читаются, только и всего. Просто похоже, что используемая библиотека в принципе не поддерживает кодировок, отличных от буржуинских, а это самый простой путь заставить это делать.
Сообщение Гость » 27 Август 2004, 13:34
И если файл начинается на
,
то именно ‘WINDOWS-1251’ и должен быть в программе. Собственно, путём двухдневных хакерских «экспериментов» и был найден такой вариант.
Возможно, что можно подменить и другие текстовые строки. Кто займётся?
А вот список кодовых таблиц кириллицы из 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)
Источник
Как изменить кодировку текстового файла на UTF-8 или Windows 1251
Кодировка текста – это схема нумерации символов, в которой каждому символу, цифре или знаку присвоено соответствующее число. Кодировку используют для сохранения и обработки текста на компьютере. Каждый раз при сохранении текста в файл он сохраняется с использованием определенной схемы кодирования, и при открытии этого файла необходимо использовать такую же схему, иначе восстановить исходный текст не получится. Самыми популярными кодировками для кириллицы сейчас являются UTF-8, Windows-1251 (CP1251, ANSI).
Для того чтобы программа смогла правильно открыть текстовый файл, иногда приходится вручную менять кодировку, перекодируя текст из одной схемы в другую. Например, не редко возникают проблемы с открытием файлов CSV, XML, SQL, TXT, PHP.
В этой небольшой статье мы расскажем о том, как изменить кодировку текстового файла на UTF-8, Windows-1251 или любую другую.
Блокнот Windows
Если вы используете операционную систему Windows 10 или Windows 11, то вы можете изменить кодировку текста с помощью стандартной программы Блокнот. Для этого нужно открыть текстовый файл с помощью Блокнота и воспользоваться меню « Файл – Сохранить как ».
В открывшемся окне нужно указать новое название для файла, выбрать подходящую кодировку и нажать на кнопку « Сохранить ».
К сожалению, для подобных задач программа Блокнот часто не подходит. С ее помощью нельзя открывать документы большого размера, и она не поддерживает многие кодировки. Например, с помощью Блокнота нельзя открыть текстовые файлы в DOS 866.
Notepad++
Notepad++ (скачать) является одним из наиболее продвинутых текстовых редакторов. Он обладает подсветкой синтаксиса языков программирования, позволяет выполнять поиск и замену по регулярным выражениям, отслеживать изменения в файлах, записывать и воспроизводить макросы, считать хеш-сумы и многое другое. Одной из основных функций Notepad++ является поддержка большого количества кодировок текста и возможность изменения кодировки текстового файла в UTF-8 или Windows 1251.
Для того чтобы изменить кодировку текста с помощью Notepad++ файл нужно открыть в данной программе. Если программа не смогла правильно определить схему кодирования текста, то это можно сделать вручную. Для этого нужно открыть меню « Кодировки – Кириллица » и выбрать нужный вариант.
После открытия текста можно изменить его кодировку. Для этого нужно открыть меню « Кодировки » и выбрать один из вариантов преобразования. Notepad++ позволяет изменить текущую кодировку текста на ANSI (Windows-1251), UTF-8, UTF-8 BOM, UTF-8 BE BOM, UTF-8 LE BOM.
После преобразования файл нужно сохранить с помощью меню « Файл – Сохранить » или комбинации клавиш Ctrl-S.
Akelpad
Akelpad (скачать) – достаточно старая программа для работы с текстовыми файлами, которая все еще актуальна и может быть полезной. Фактически Akelpad является более продвинутой версией стандартной программы Блокнот из Windows. С его помощью можно открывать текстовые файлы большого размера, которые не открываются в Блокноте, выполнять поиск и замену с использованием регулярных выражений и менять кодировку текста.
Для того чтобы изменить кодировку текста с помощью Akelpad файл нужно открыть в данной программе. Если после открытия файла текст не читается, то нужно воспользоваться меню « Файл – Открыть ».
В открывшемся окне нужно выделить текстовый файл, снять отметку « Автовыбор » и выбрать подходящую кодировку из списка. При этом в нижней части окна можно видеть, как будет отображаться текст.
Для того чтобы изменить текущую кодировку текста нужно воспользоваться меню « Файл – Сохранить как » и сохранить документ с указанием новой схемы кодирования.
В отличие от Notepad++, текстовый редактор Akelpad позволяет сохранить файл в практически любой кодировке. В частности, доступны Windows 1251, DOS 886, UTF-8 и многие другие.
Источник
-
#1
Не поддерживается при загрузке xml кодировка windows-1251
Пытаюсь прочитать xml-файл с русскими буквами в кодировке windows-1251 на PHP 5.0.5 + libxml + libiconv
И на попытку получить содержимое файла:
Warning: DOMDocument::load() [function.load]: Unsupported encoding windows-1251 in /var/www/example.xml, line: 1 in /var/www/test1.php on line 7
Хотя iconv отлично перекодирует из одной кодировки в другую.
echo iconv(«WINDOWS-1251», «KOI8-R», «Проверка.»);
Нужна помощь!
-
#2
А ты пробовал переходить на UTF-8? Говорят очень полезная штука
-
#3
Как ее использовать, она не поддерживает кирилицу!
-
#4
Line
UTF8 поддерживает кириллицу
-
#5
Ну так это бред, получается вначале из Win-1251 в UTF8 потом опять в win-1251
-~{}~ 15.11.05 16:44:
А как решить мою проблему?
Ну подскажите
-~{}~ 15.11.05 22:40:
Автор оригинала: Line
Ну так это бред, получается вначале из Win-1251 в UTF8 потом опять в win-1251-~{}~ 15.11.05 16:44:
А как решить мою проблему?
Ну подскажите
Так не хочется использовать UTF-8, хочтеся WINDOWS-1251
-
#6
libxml у тебя криво собран и не знает ниче про кодировки
-
#7
PHP:
$doc = new DOMDocument();
$doc->encoding = "windows-1251";
$string = iconv("windows-1251", "UTF-8", "тестовая строка");
$node = $doc->createElement("para",$string);
$newnode = $doc->appendChild($node);
echo '<pre>';
echo htmlentities($doc->saveXML());
echo '</pre>';
Отдает абракадабру. Тоже проблема с неправильно собранной libxml?
Версия php — 5.1.2
-
#8
Насколько я знаю, в XML-файлах вся информация хранится в кодировке UTF-8. Следовательно, тебе по-любэ придется делать iconv() туда-сюда.
-
#9
Задачу саму опиши — что-куда и почему.
-
#10
Fred — ВНУТРЕННЕЕ представление у всех XML документов во ВСЕХ XML DOM XSLT библиотеках это UTF (8/16 или вообще полный unicode, зависит от реализации)
libxml в php5 это utf8
если хочешь выводить в другой кодировке, то придется
но совет простой
если есть возможность (MySQL 4.1+, PostgreSQL8.x, FireBird 1.5) то лучше переходи на utf8 СРАЗУ и везде
-
#11
Даже если генерировать документ в родной для ДОМ кодировке, всейравно получается абракадабра.
PHP:
$doc = new DOMDocument();
$doc->encoding = 'UTF-8';
$string = iconv("windows-1251", "UTF-8", "тестовая строка");
$node = $doc->createElement("para",$string);
$newnode = $doc->appendChild($node);
echo '<pre>';
echo htmlentities($doc->saveXML());
echo '</pre>';
echo $string;
Выдает:
<?xml version=»1.0″ encoding=»UTF-8″?>
<para>Ñ?еÑ?Ñ?оваÑ? Ñ?Ñ?Ñ?ока</para>
тестовая строка
-
#12
Тут уже грабли в русском апаче
попробуй в директории скрипта создать файл .htaccess и прописать CharsetDisable On
-
#13
PHP:
$string = iconv("windows-1251", "UTF-8", "тестовая строка");
А почему тогда строка в UTF8 выводится нормально?
-
#14
Если есть уже PHP5 — юзайте SimpleXML
6 строчек кода и все работает.
-
#15
Я пока лишь изучал DOM модель. Поэтому и возник вопрос: это у меня руки кривые или у DOM проблемы с кириллицей. Собственно с такими же проблемами столкнулся и в DOM XML (PHP4).
А насущные проблемы пока решаю и без DOM-модели.
-~{}~ 07.02.06 12:29:
Автор оригинала: worm
Тут уже грабли в русском апаче
попробуй в директории скрипта создать файл .htaccess и прописать CharsetDisable On
Apache не русский, а обычный 1.3.33
-
#16
я не понимаю в чем проблема-то:
Код:
$doc = new DOMDocument();
$doc->encoding = 'UTF-8';
$string = iconv("WINDOWS-1251", "UTF-8", "тестовая строка");
$node = $doc->createElement("para",$string);
$newnode = $doc->appendChild($node);
echo '<pre>';
echo htmlentities($doc->saveXML(), ENT_QUOTES, "UTF-8");
echo '</pre>';
echo $string;
<?xml version=»1.0″ encoding=»UTF-8″?>
<para>тестовая строка</para>
тестовая строка
-
#17
Спасибо, теперь все работает. Сам себя запутал.
-
#18
скажите что нужно добавить вот мой парсер
PHP:
<?php
require_once('include/dbLayer.php');
require_once('include/readableData.php');
require_once('include/settings.php');
$alliancePlrs = array();
$hordePlrs = array();
$gmPlrs = array();
$s = gSettings::get();
$sDoc = new DOMDocument();
$sDoc->load($s->statfile);
$plrList = $sDoc->getElementsByTagName('plr');
for($i = 0; $i < $plrList->length; $i++){
$plr = $plrList->item($i);
$ar = array( 'name' => 'Unknown', 'level' => 0, 'gender' => 0, 'race' => 0, 'class' => 0, 'map' => -1, 'areaid' => -1);
$n = $plr->firstChild;
while($n){
$ar[$n->nodeName] = $n->nodeValue;
$n = $n->nextSibling;
}
switch($ar['race']){
case 1: // human
case 3: // dwarf
case 4: // night elf
case 7: // gnome
case 11: // draenei
$alliancePlrs[] = $ar;
break;
case 2:
case 5:
case 6:
case 8:
case 10:
$hordePlrs[] = $ar;
break;
default:
// do not know where to add players
break;
}
}
?>
Парсит вот эту страничку
PHP:
<?xml version="1.0" encoding="windows-1251"?>
<serverpage>
<sessions>
<plr>
<name>Сатана</name>
<race>5</race>
<class>5</class>
<gender>0</gender>
<pvprank>0</pvprank>
<level>70</level>
<map>530</map>
</plr>
</sessions>
</serverpage>
Выводит name как сатана
-
#19
sarsen
Не нужно писать в тему 2х летней давности. Создай новую.
И прочти правила форума обязательно ещё раз.
-
#20
sarsen
будешь диггерствовать, поставлю read-only
не надо спамить в старые темы