|
Раскодировать значение из ЧтениеXML | ☑ | ||
---|---|---|---|---|
0
Boudybuilder
08.04.19
✎
08:40
|
Здравствуйте!
Разбираем XML файл при помощи ЧтениеXML. Но так как текст внутри тега на Азербайджанском, то он закодирован. Вот пример: "<c2>Çınqıl (Yuyulmuş)</c2>" А получить хотелось бы так: "<c2>Çınqıl (Yuyulmuş)</c2>" Подскажите как быть? Платформа 8.3 |
|||
1
Мыш
08.04.19
✎
08:52
|
Найти все &# и менять на символы
|
|||
2
Boudybuilder
08.04.19
✎
08:58
|
Спасибо, но каким образом?
|
|||
3
Кирпич
08.04.19
✎
09:02
|
(2) покажите это программисту и дайте ему денег. он всё сделает как надо
|
|||
4
СвинТуз
08.04.19
✎
09:06
|
(0)
Что то у вас с кодовой страницей надо смотреть как правильно сделать |
|||
5
СвинТуз
08.04.19
✎
09:09
|
ЧтениеXML (XMLReader)
КодировкаXML (XMLEncoding) Использование: Тип: Строка. Кодировка исходного документа XML. Содержит значение атрибута encoding объявления XML. Если атрибут не указан или объявление не прочитано (отсутствует), то будет возвращена кодировка UTF8. Примечание: Поддерживаемые коды кодировок (с учетом правил http://www.w3.org/TR/2004/REC-xml-20040204/#NT-EncName): |
|||
6
Boudybuilder
08.04.19
✎
09:10
|
(4) Спасибо. Вот файл: https://yadi.sk/d/ZTBLCKzc7RmLlw может что то подскажете?
|
|||
7
Boudybuilder
08.04.19
✎
09:12
|
(5) Вот такое отображает отладчик: https://yadi.sk/i/pLBy2MUkl70JWQ
|
|||
8
СвинТуз
08.04.19
✎
09:12
|
||||
9
СвинТуз
08.04.19
✎
09:12
|
Работайте сами )))
|
|||
10
СвинТуз
08.04.19
✎
09:14
|
У Вас вроде как я понял будет проблема с одной буквой если сделать все правильно.
|
|||
11
Кирпич
08.04.19
✎
09:18
|
билиберда Çınqı
это HTML нужно тупо заменить Ç на Символ(199) и т.д. |
|||
12
Кирпич
08.04.19
✎
09:20
|
ну и наорать на тех, кто делает такие xml
|
|||
13
Boudybuilder
08.04.19
✎
09:20
|
Ну хоть подскажите что нужно делать. Как менять эти символы?
|
|||
14
quest
08.04.19
✎
09:26
|
(12) +100500
|
|||
15
Кирпич
08.04.19
✎
09:27
|
(13) Ну как... Открываешь текст и проверяешь каждый символ, если символ не &, то пишешь символ в выходной файл. Если символ это & и за ним идет # и цифры, читаешь цифры, и пишешь в выходной поток Символ(<цифры>)
|
|||
16
NorthWind
08.04.19
✎
09:58
|
(0) если взять виндовую таблицу символов и калькулятор, то видно, что нужные символы заданы в кодировке UTF-16 (little endian). Т.е. 305 = 0x131 = 'ı', 199 = 0xC7 = 'Ç'. А в разделе Encoding указана UTF-8. То есть тут некоторые непонятки по форматированию XML.
|
|||
17
NorthWind
08.04.19
✎
10:08
|
Чтобы получить из этого корректный XML, надо сделать следующее.
1. Поменять кодировку на UTF-16 и соответствующим образом перекодировать XML (из однобайтовой кодировки в двухбайтовую). В простейшем случае это можно сделать, например, встроенным редактором фар-менеджера. 2. Исправить основной косяк данного файла - заменить &# на &# Собственно, именно из-за этого проблема в отображении - криво записанные литералы. После этого файл отображается верно. Вот вам файло исправленное - https://drive.google.com/open?id=16HT2ql-sTLl0OOCXsVPYzDVa0x5WUK6T |
|||
18
Кирпич
08.04.19
✎
10:14
|
&НаКлиенте
Функция ПреобразоватьБилиберду(Текст) вт = ""; Длина = СтрДлина(Текст); а = 1; Пока (а <= Длина) Цикл Симв = Сред(Текст,а,1); Если Симв <> "&" Тогда вт = вт + Симв; Иначе Если Сред(Текст,а+1,1) = "#" Тогда а = а + 2; Симв = Сред(Текст,а,1); Ч = ""; Пока (Симв <> ";") цикл Ч = Ч + Симв; а = а + 1; Симв = Сред(Текст,а,1); КонецЦикла; Ч = Число(Ч); вт = вт + Символ(Ч); Иначе вт = вт + Симв; КонецЕсли; КонецЕсли; а = а + 1; КонецЦикла; Возврат вт; КонецФункции &НаКлиенте Процедура Команда1(Команда) // Вставить содержимое обработчика. Сообщить(ПреобразоватьБилиберду("Qum-Çınqıl satışı")); Сообщить(ПреобразоватьБилиберду("Çınqıl (Yuyulmuş)")); КонецПроцедуры |
|||
19
Fram
08.04.19
✎
10:14
|
(0) офф: а почему boUdy?
|
|||
20
NorthWind
08.04.19
✎
10:14
|
(11) литералы, записанные как &#, работают и в XML. В данном случае проблема в том, что там не &#, a &#
|
|||
21
Boudybuilder
08.04.19
✎
21:13
|
(18) Спасибо большое!
Эта функция очень мне помогла! Это именно то что надо. (19) Это от прозвища пошло. Боуди. А так как я спортсмен то называли друзья - БоудиБилдер ;) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |