Надо: Сохранить из 1С 7.7 файл в формате UTF-8
Решение больше частью отсюда.
Альтернативные варианты: использование библиотеки от romix или использовать adodb stream.
UPD 16.08.17 По умершей ссылке было что-то вроде этого:
Функция ПреобразоватьСтрокуВУТФ8(Стр)
Длина=СтрДлина(Стр);
Итог="";
Для Н=1 По Длина Цикл
Знак=Сред(Стр,Н,1);
Код=КодСимв(Знак);
Если Код<128 Тогда
Итог=Итог+Знак;
Иначе
Если (Код>=КодСимв("А"))И(Код<=КодСимв("п")) Тогда
Итог=Итог+Симв(208)+Симв(144+Код-КодСимв("А"));
ИначеЕсли (Код>=КодСимв("р"))И(Код<=КодСимв("я")) Тогда
Итог=Итог+Симв(209)+Симв(128+Код-КодСимв("р"));
ИначеЕсли (Знак="ё") Тогда
Итог=Итог+Симв(209)+Симв(145);
ИначеЕсли (Знак="Ё") Тогда
Итог=Итог+Симв(208)+Симв(129);
ИначеЕсли (Знак="і") Тогда
Итог=Итог+Симв(209)+Симв(150);
ИначеЕсли (Знак="ї") Тогда
Итог=Итог+Симв(208)+Симв(151);
ИначеЕсли (Знак="є") Тогда
Итог=Итог+Симв(209)+Симв(148);
ИначеЕсли (Знак="Є") Тогда
Итог=Итог+Симв(208)+Симв(132);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат Итог;
КонецФункции
Решение больше частью отсюда.
Альтернативные варианты: использование библиотеки от romix или использовать adodb stream.
UPD 16.08.17 По умершей ссылке было что-то вроде этого:
Функция ПреобразоватьСтрокуВУТФ8(Стр)
Длина=СтрДлина(Стр);
Итог="";
Для Н=1 По Длина Цикл
Знак=Сред(Стр,Н,1);
Код=КодСимв(Знак);
Если Код<128 Тогда
Итог=Итог+Знак;
Иначе
Если (Код>=КодСимв("А"))И(Код<=КодСимв("п")) Тогда
Итог=Итог+Симв(208)+Симв(144+Код-КодСимв("А"));
ИначеЕсли (Код>=КодСимв("р"))И(Код<=КодСимв("я")) Тогда
Итог=Итог+Симв(209)+Симв(128+Код-КодСимв("р"));
ИначеЕсли (Знак="ё") Тогда
Итог=Итог+Симв(209)+Симв(145);
ИначеЕсли (Знак="Ё") Тогда
Итог=Итог+Симв(208)+Симв(129);
ИначеЕсли (Знак="і") Тогда
Итог=Итог+Симв(209)+Симв(150);
ИначеЕсли (Знак="ї") Тогда
Итог=Итог+Симв(208)+Симв(151);
ИначеЕсли (Знак="є") Тогда
Итог=Итог+Симв(209)+Симв(148);
ИначеЕсли (Знак="Є") Тогда
Итог=Итог+Симв(208)+Симв(132);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат Итог;
КонецФункции
2 комментария:
Ссылка умерла.
Сейчас поправим сообщение :)
Отправить комментарий