Вообще задача была поднять WEB сервис, чтобы поставщик услуг, стучась к нам по API мог заносить некую информацию.
По API залетает XML, в которой кодировка кириллицы может быть не читабельной.
Пример:
<owner>Standard</owner>
<start_country_id>RU</start_country_id>
<start_zip>450028</start_zip>
<start_city>г. Уфа, Уфимский район</start_city>
<start_region/>
<end_country_id>RU</end_country_id>
Ну и в рамках задачи, надо было все это дело самому обрабатывать, чтобы в базу заходил корректный текст.
Для сего и была написана соответствующая функция. Эта функция и используется в обработке. Если кому надо, решать подобную задачу, то просто возьмите функцию из обработки.
Задача решается несложно.
- функция никуда не записывает файлы, работает в памяти со строкой. Это важно, в основном все пишут куда-то файл, потом читают в какой-либо кодировке. Считаю это не приемлемым. Если файл потом не требуется хранить, то с данными надо работать в памяти.
- Функция преобразует текст в разные кодировки (UTF8,windows-1251,koi8-r,koi8-u,cp866,iso-8859-5);
- Определяет, какая кодировка соответствует нормальному тексту, на основе рейтинга;
- Возвращает строку.
- Работает с кодировками: utf-8, windows-1251, koi8-r, koi8-u, cp866, iso-8859-5 (в самой функции, через запятую, без пробелов можно добавить сколько хотите кодировок (которые понимает 1С, но это может влиять на скорость работы).
Тестировал на платформе: 8.3.12.1790.