Имя: Пароль:
1C
 
Перекодировка из utf-8 и обратно
,
0 leklerk
 
09.10.15
14:32
Добрый день. Подскажите пожалуйста, как перекодировать строку из utf-8 в кодировку, которая используется в 1С (наверно windows-1251) и обратно.
Я получаю данные из БД сайта, а там кракозябры...
А мне нужно сравнить, различается ли например наименование какого-нибудь товара в БД сайта и в 1С-ке.
1 ДенисЧ
 
09.10.15
14:35
сохранить в текстовый файл, прочитать через текстовый документ как утф, сохранить как ansi

))
2 Гёдза
 
09.10.15
14:36
юзай правильный дравер бд
3 leklerk
 
09.10.15
14:41
ДенисЧ, нет, не помогло, сделал:
Текст = Новый ЗаписьТекста("E:\hlam1C\Николай\СменаКодировки.txt");
        Текст.ЗаписатьСтроку(V1.name);               
        Текст.Закрыть();
        
        ТекстовыйДокумент = Новый ТекстовыйДокумент;
        ТекстовыйДокумент.Прочитать("E:\hlam1C\Николай\СменаКодировки.txt", КодировкаТекста.UTF8);
        ТекстовыйДокумент.Записать("E:\hlam1C\Николай\СменаКодировки.txt", КодировкаТекста.ANSI);
        
        ТекстВФайле = ТекстовыйДокумент.ПолучитьТекст();

В ТекстВФайле те же кракозябры.
4 spectre1978
 
09.10.15
14:42
5 leklerk
 
09.10.15
14:46
spectre1978, спасибо, но мне надо в самой 1С-ке сделать, штатными средствами.
6 spectre1978
 
09.10.15
14:48
(5) средствами 1С вряд ли сделаете, там, по-моему, битовые операции понадобятся, а она этого не умеет. Хотя, может, я и ошибаюсь
7 Злопчинский
 
09.10.15
14:50
восьмерочники - они как инвалиды...

Функция глПреобразоватьСтрокуВUTF8(Стр) Экспорт    
    Длина=СтрДлина(Стр);
    
    //ОТЛАДКА
    //Возврат Стр;
    
    Итог="";
    Для Н=1 По Длина Цикл
        Знак = Сред(Стр,Н,1);
        Код  = КодСимв(Знак);
        Если Код<128 Тогда
            Итог = Итог + Знак;
        Иначе
            Если       (Код>=КодСимв("А"))И(Код<=КодСимв("п")) Тогда    Итог=Итог+Симв(208)+Симв(144+Код-КодСимв("А"));
            ИначеЕсли (Код>=КодСимв("р"))И(Код<=КодСимв("я")) Тогда Итог=Итог+Симв(209)+Симв(128+Код-КодСимв("р"));
            ИначеЕсли (Знак="ё") Тогда                              Итог=Итог+Симв(209)+Симв(145);
            ИначеЕсли (Знак="Ё") Тогда                                Итог=Итог+Симв(208)+Симв(129);
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
    Возврат Итог;
КонецФункции //глПреобразоватьСтрокуВУТФ8()
8 Fragster
 
гуру
09.10.15
14:52
(7) гыгы
9 leklerk
 
09.10.15
14:59
Злопчинский, а нерусские буквы она нормально преобразует? Я находил в интернете функции, но обычно с ошибками и в любом случае нет гарантии что правильно, поэтому хотелось бы средствами 1С это сделать.
10 spectre1978
 
09.10.15
15:00
(9) имея хоть какой-то код в качестве образца - всегда можно написать свой
11 Злопчинский
 
09.10.15
15:03
12 Fragster
 
гуру
09.10.15
15:08
(11) ну я хз, на фотке вроде чувак горнолыжный фристайлер колено вывихнул... а в (7) реально костыль, который отвалится как только - так сразу.
13 Злопчинский
 
09.10.15
17:11
(12) это не чувак - а конкретный Злопчинский ;-) а суть - да, одна - без "костыля" никак, только маленькие нагрузки...