Имя: Пароль:
1C
1С v8
Как перевести строку в UTF-8
0 Victor1c
 
24.04.13
12:53
Нашел такую функцию - не работает.

Функция UTF8(Стр)
   Длина=СтрДлина(Стр);
   Итог="";
   Для Н=1 По Длина Цикл
       Знак=Сред(Стр,Н,1);
       Код=КодСимвола(Знак);
       Если Код<128 Тогда
           Итог=Итог+Знак;
       Иначе
           Если (Код>=КодСимвола("А"))И(Код<=КодСимвола("п")) Тогда
               Итог=Итог+Символ(208)+Символ(144+Код-КодСимвола("А"));
           ИначеЕсли (Код>=КодСимвола("р"))И(Код<=КодСимвола("я")) Тогда
               Итог=Итог+Символ(209)+Символ(128+Код-КодСимвола("р"));
           ИначеЕсли (Знак="ё") Тогда
               Итог=Итог+Символ(209)+Символ(145);
           ИначеЕсли (Знак="Ё") Тогда
               Итог=Итог+Символ(208)+Символ(129);
           КонецЕсли;
       КонецЕсли;
   КонецЦикла;
   Возврат Итог;
КонецФункции
1 Torquader
 
24.04.13
13:06
Начнём с того, что в 1С строка всегда Unicode и перевести её в UTF-8 не получится, так как каждый символ занимает два байта, а в UTF-8 произвольное число байт.
Можно попытаться "имитировать" строку UTF-8 из двухбайтовой строки, но результат будет непредсказуемым - мы даже не можем получить строку с нечётным числом байтов.
2 mehfk
 
24.04.13
13:17
(0) ЗаписьТекста/ЧтениеТекста
3 oleg_km
 
24.04.13
13:49
+(1) ну то есть 1С всегда будет интерпретировать ее как Unicode. Для чего нужно, может подскажем как обойти?
4 kostadav
 
24.04.13
17:39
У меня получилось только при помощи внешней компоненты
5 Ковычки
 
24.04.13
17:40
открыть сохранить открыть - еще не предлагали ?