(1)Строка имеется в 1С?
В 1С внутреннее представление символов - 16-битный Unicode.
Изменение представления (перекодировка) требуется при передаче данных в файл, http-запрос или в двоичные данные.
А перекодированная строка Вам где нужна - в файле, в http-запросе (в заголовке или в теле) или в двоичных данных?
С файлом всё просто - указываете нужную кодировку в параметрах конструктора ЗаписьТекста() или в параметрах метода ЗаписьТекста.Открыть()
С http-запросом - тоже просто, при использовании метода УстановитьТелоИзСтроки() тоже можно задать кодировку
Для двоичных данных - указываете нужную кодировку в методе глобального контекста ПолучитьДвоичныеДанныеИзСтроки()
Пишу обработку - связку 1С и сайта через API. Пользователь в поле ввода в 1С вводит товар,который хочет купить через сайт.После этого формируется GET-запрос к сайту.В этом запросе нужно передать строчку с наименованием товара в кодировке UTF8. Собственно нужно перекодировать строку с наименованием товара,введенную через поле ввода в UTF8.
Результат = 0;
Множитель = 1;
Пока Значение <> "" Цикл
Результат = Результат + Множитель * (Найти("0123456789ABCDEF", Прав(Значение,1))-1);
Множитель = Множитель * 16;
Значение = Лев(Значение,СтрДлина(Значение)-1);
КонецЦикла;
Возврат Результат;
КонецФункции
Функция ДекодироватьURL(URL, WindowsFileURI=Истина)
Если Код = 37 Тогда
// Символ(37) = "%"
Код = Из16ВЧисло(Сред(URL, Инд+1, 2));
Инд = Инд + 2;
ИначеЕсли ОсталосьСимволов = 0 Тогда
Если (Код = 43) и (не WindowsFileURI) Тогда
// Символ(43) = "+"
Код = 32; // Символ(32) = " " (пробел)
КонецЕсли;
Результат = Результат + Символ(Код);
Инд = Инд + 1;
Продолжить;
КонецЕсли;
Если Код <= 127 Тогда
// Код = 0b0ххххххх
Результат = Результат + Символ(Код);
ИначеЕсли Код <= 191 Тогда
// Код = 0b10хххххх
ПолныйКод = (ПолныйКод*64) + (Код%64); // shl(ПолныйКод, 6) + (Код & 0x3F)
ОсталосьСимволов = ОсталосьСимволов - 1;
Если ОсталосьСимволов = 0 Тогда
Результат = Результат + Символ(ПолныйКод);
КонецЕсли;
ИначеЕсли Код <= 223 Тогда
// Код = 0b110ххххх
ПолныйКод = Код % 32; // Код & 0x1F
ОсталосьСимволов = 1;
ИначеЕсли Код <= 239 Тогда
// Код = 0b1110хххх
ПолныйКод = Код % 16; // Код & 0x0F
ОсталосьСимволов = 2;
ИначеЕсли Код <= 247 Тогда
// Код = 0b11110ххх
ПолныйКод = Код % 8; // Код & 0x07
ОсталосьСимволов = 3;
ИначеЕсли Код <= 251 Тогда
// Код = 0b111110хх
ПолныйКод = Код % 4; // Код & 0x03
ОсталосьСимволов = 4;
ИначеЕсли Код <= 253 Тогда
// Код = 0b1111110х
ПолныйКод = Код % 2; // Код & 0x01
ОсталосьСимволов = 5;
КонецЕсли;
Функция UTF8(Ст)
НоваяСт = "";
Для i=1 по СтрДлина(Ст) Цикл
Символ = Сред(Ст,i,1);
КодСимвола = КодСимв(Символ);
Если (КодСимвола > 191) и (КодСимвола < 224) Тогда // А - Я
НоваяСт = НоваяСт + Симв(208)+Симв(КодСимвола-48);
ИначеЕсли (КодСимвола > 223) и (КодСимвола < 240) Тогда // а - п
НоваяСт = НоваяСт + Симв(208)+Симв(КодСимвола-48);
ИначеЕсли (КодСимвола > 239) и (КодСимвола < 256) Тогда // р - я
НоваяСт = НоваяСт + Симв(209)+Симв(КодСимвола-112);
ИначеЕсли (Символ = "ё") или (Символ = "Ё") Тогда
НоваяСт = НоваяСт + Симв(208)+Симв(КодСимвола-39);
ИначеЕсли (Символ = "№") Тогда
НоваяСт = НоваяСт + Симв(226)+Симв(132)+Симв(150);
Иначе
НоваяСт = НоваяСт + Символ;
КонецЕсли;
КонецЦикла;
Возврат НоваяСт;
КонецФункции
&НаКлиенте
// Возвращает перекодированную строку из DOS в UTF8
// Аналогично и с дргими кодировками
Функция функDOS2UTF8(СтрокаDOS)
ТекстUTF8 = Новый ТекстовыйДокумент;
// ТекстUTF8.УстановитьТипФайла(КодировкаТекста.UTF8); - вот это лишнее, т.к. по умолчанию у насUTF8
ТекстUTF8.УстановитьТекст(СтрокаDOS);
Возврат ТекстUTF8.ПолучитьТекст();
КонецФункции // функDOS2UTF8