v7: Перекодировка XML файла #699156


#0 by vova1122
Существуют утилиты для перекодировки с utf8 на windows-1251 и обратно utf8_1251.exe  и  win1251_utf8.exe. Только мне они не помогли.   Опишу ситуацию И так есть XML-файл в заголовке которого прописано <?xml version="1.0" encoding="utf-8"?>. Пробовал поменять кодировку на windows-1251 вышеуказанной утилитой. В итоге в заголовке ничего не поменялось, а строки с кирилецей испарились. Когда читаю XML файл (при UTF-8) появляется ошибка : {D:MAILXML_IMPORT.ERT}: : An invalid character was found in text content. Когда вручную в XML файлt  поменяю заголовок с UTF-8 на windows-1251, тогда все прекрасно читается (и строки не пропадают) Собственно вопрос: как програмно поменять заголовок в XML файле с UTF-8 на windows-1251
#1 by Torquader
Если "кто-то умный" записал в заголовке utf-8, а внутри строки в Windows-1251, то это не проблемы того, кто читает - это задача - объяснить тому, кто пишет, что он "чудак".
#2 by Рэйв
+1
#3 by Fram
Открыть как текст в кодировке windows-1251 и поменять "utf-8" на "windows-1251"
#4 by vova1122
глухой номер. Присылают нам такой файл, и говорят что так должно быть, и никак иначе. прочесть как текстовый файл. Сделать замену в заголовке и записать как текст с расширением XML? Я правильно понял?
#5 by Fram
Да
#6 by Wobland
я тебе по секрету скажу. хмл - тот же текстовый файл
#7 by Torquader
У вас семёрка ? Можно вообще как текст читать и не думать ни о какой кодировке в заголовке - только структуру придётся самому разбирать.
#8 by vova1122
спасибо, я так и думал делать. Но решил переспросить, вдруг может имеется другое решение
#9 by Torquader
#10 by vova1122
да 7.7. очень много телодвижений....
#11 by vova1122
спасибо, но на семерке немного по другому этот код пишется. но сть понятна
#12 by Fram
это вроде был семерочный код ))
#13 by Torquader
Ну, может быть, автор в семёрке объекта "Текст" не нашёл - просто, когда файл большой - все рекомендуют Ole.Object - Scripting.FileSystemObject
#14 by vova1122
Я о "Прочитать" - это меня смутило. В семерке "Открыть"
#15 by Torquader
Ну перепутал - бывает.
#16 by vova1122
вообщем спасибо. придется всетаки делать этот ход конем. иначе никак....
#17 by Torquader
Ну, если кто-то там сделал "ход козлом" - то придётся и "ход конём" делать.
#18 by Eugene_life
А, может, тупо перезаписывать файл с изменением кодировки? Все же стремно из-за несовпадения заголовка и тела переписывать чтение XML на чтение текста.
#19 by Torquader
Мы уже, вроде как, это сделали. Только вот, насколько я помню, у семёрки с чтением xml как-то не очень.
#20 by spectre1978
есть нюанс. XML - он, конечно, текстовый, только разделители строк в нем вовсе не обязаны быть. Парсеры сплошь и рядом записывают XML файлы без разделителей. Объект "Текст" в семерке без проблем поймет файл с одной строчкой весом много мегабайт?
#21 by Torquader
Объект Текст вообще файл в несколько сот мегабайт уже переваривает с трудом, вне зависимости от разделителей в нём.
#22 by spectre1978
Если он его сразу целиком в память зачитывает, то естественно. Фаровским редактором (по F4) текстовый файл в десятки мегабайт тоже чувствительно открывать. Задумывается.
#23 by spectre1978
к
#24 by Torquader
Таки задумывается - падает - я бы сказал. Но, Scripting.TextStream переваривает файлы любой длины, причём без каких-либо проблем. (Хотя, надо пробовать превысить число long по числу строк в файле - возможно - лажанёт).
#25 by spectre1978
попробовал, не прокатывает. Строки корежатся, скорее всего, в момент чтения парсером, как будешь записывать - значение уже не имеет. Похоже что вариант с заменой кодировки средствами чтения-записи файлов - единственный.
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С