| 
    
        
     
     | 
    
    
  | 
Раскодировать значение из Чтение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) Это от прозвища пошло. Боуди. А так как я спортсмен то называли друзья - БоудиБилдер ;)  | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |