![]() |
![]() |
![]() |
|
Кодировка XML | ☑ | ||
---|---|---|---|---|
0
Air777
12.11.08
✎
16:21
|
Как выгрузить данные в XML в кодировке отличной от UTF-8 например Windows-1251.
Парметр КодировкаXML - только для чтения! Особенно убивает абсурд ЗаписьХМЛ=Новый ЗаписьXML() ЗаписьХМЛ.Параметры.Кодировка - тоже только для чтения. Хочу подружить выгрузку из 8.1 и 7.7 подскажите обходные пути если они есть. Забавно что из 7.7 выгрузить можно в любой кодировке, а вот прочитать нет. В 8.1 наоборот. И кто писал эти функции??? |
|||
1
KalachevDV
12.11.08
✎
16:24
|
(0) Новый ПараметрыЗаписиXML(<Кодировка>, <Версия>, <Отступ>, <Отступ атрибутов>, <Символы отступа>)
|
|||
2
wPa
12.11.08
✎
16:25
|
(0) родной формат xml не поддерживает 1251. делал так
ТекстXML = Новый ТекстовыйДокумент(); Попытка ТекстXML.Прочитать(ИмяФайла,КодировкаТекста.UTF8); Исключение Сообщить("Не удалось открыть файл"); КонецПопытки; ТекстXML.ЗаменитьСтроку(1,"<?xml version=""1.0"" encoding=""windows-1251""?>"); ТекстXML.УстановитьТипФайла(КодировкаТекста.ANSI); ИмяФайлаТхт=Сред(ИмяФайла,1,СтрДлина(ИмяФайла)-4); ТекстXML.Записать(ИмяФайлаТхт+".txt",КодировкаТекста.ANSI); |
|||
3
wPa
12.11.08
✎
16:26
|
(2) ну только расширение не тхт у тебя
|
|||
4
Air777
12.11.08
✎
16:28
|
(1) из синтаксис-помошника:
------------------------------ ПараметрыЗаписиXML.Кодировка (XMLWriterSettings.Encoding) ПараметрыЗаписиXML (XMLWriterSettings) Кодировка (Encoding) Использование: Только чтение. (!!!!!) Описание: Тип: Строка. Кодировка, используемая при записи XML (имеет смысл при записи в файл). |
|||
5
KalachevDV
12.11.08
✎
16:28
|
ЗаписьXML (XMLWriter)
ОткрытьФайл (OpenFile) Вариант синтаксиса: По имени и типу кодировки Описание: Открывает файл для записи XML. Позволяет указать тип кодировки, который будет использован для записи файла XML. И 1251 в том числе... |
|||
6
wPa
12.11.08
✎
16:31
|
(5) не работает
|
|||
7
wPa
12.11.08
✎
16:32
|
(6) повторюсь. формат xml поддруживает только утф-8 и утф-16
|
|||
8
KalachevDV
12.11.08
✎
16:33
|
(7) Что ж они (СП 1С) тогда вводят в заблуждение?
|
|||
9
Air777
12.11.08
✎
16:37
|
(5-7) у меня реально записало в 1251 это потверждается открытием этого файла в опенофисе с принудительным указанием кодировки 1251 однако 7.7 его почему так с крокозяблами и читает
|
|||
10
Air777
12.11.08
✎
16:38
|
не понимаю что нужно указать чтобы эту выгрузку нормально прочитала 7.7
|
|||
11
wPa
12.11.08
✎
16:41
|
вот в спецификации сказано.
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) |
|||
12
KalachevDV
12.11.08
✎
16:45
|
(11) Попробовал...
ЗаписьXML = Новый ЗаписьXML(); Параметры = Новый ПараметрыЗаписиXML("cp866", "1.1", Истина, Истина); ЗаписьXML.ОткрытьФайл("D:\data.xml", Параметры); ЗаписьXML.ЗаписатьОбъявлениеXML(); ЗаписьXML.Закрыть(); Создал файл. В файле <?xml version="1.1" encoding="cp866"?> ... если указываешь 1251 ругается... |
|||
13
KalachevDV
12.11.08
✎
16:48
|
(12) А если указать кодировку "windows1251" (т.е без дефиса), то тоже проглатывает...
<?xml version="1.1" encoding="windows1251"?> |
|||
14
Air777
12.11.08
✎
16:49
|
а вот это вообще за пределами моего понимания: на англоязычном серванте с муи загрузка-выгрузка идет на ура в любой кодировке! А вот с англоязычной на рускоязычную ХР сабж. :(
|
|||
15
wPa
12.11.08
✎
16:55
|
(13) Так что работает? Открывается xml?
|
|||
16
KalachevDV
12.11.08
✎
17:02
|
(15) не пробовал открывать...
Вот попробовал под win2003 английским с указанием кодировки именно "windows-1251"... Результат - <?xml version="1.1" encoding="windows-1251"?>. Щас попробую сформировать чтонить простенькое и открыть... |
|||
17
wPa
12.11.08
✎
17:05
|
открой в IE каком нидь )
|
|||
18
KalachevDV
12.11.08
✎
17:08
|
(17) сформировал вот такой файлик
<?xml version="1.0" encoding="windows-1251"?> <Проверка> <Работает/> </Проверка> IE открыл... я думал ты спрашивал, открывает ли его 7.7 |
|||
19
KalachevDV
12.11.08
✎
17:12
|
(17) а вот 7.7 под рукой нет... Проверить не могу, мож Air777 попробует...
Кстати, файл формировался под win2003 английским. Открывался в нем же и в Vista русской... Под вистой обработка по формированию файла вылетает с ошибкой - "Неверная кодировка" |
|||
20
KalachevDV
12.11.08
✎
17:27
|
+(19) В общем итого, мож кому пригодиться... Следующий код формирует файл xml в кодировке "windows-1251". IE его корректно открывает. Что в Висте что в 2003 сервере.
ЗаписьXML = Новый ЗаписьXML(); Параметры = Новый ПараметрыЗаписиXML("windows-1251", "1.0", Истина, Истина); ЗаписьXML.ОткрытьФайл("D:\data.xml", Параметры); ЗаписьXML.ЗаписатьОбъявлениеXML(); ЗаписьXML.ЗаписатьНачалоЭлемента("Проверка"); ЗаписьXML.ЗаписатьНачалоЭлемента("Работает"); ЗаписьXML.ЗаписатьКонецЭлемента(); ЗаписьXML.ЗаписатьКонецЭлемента(); ЗаписьXML.Закрыть(); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |