Имя: Пароль:
1C
1C 7.7
v7: Существует ли способ из 1С 7.7 преобразовать CSV файл из ANSI в UTF-8 ?
,
0 dimm7310
 
12.04.12
10:16
?
1 bodri
 
12.04.12
10:17
а почему бы и нет? можно саму составить таблицу перекодировки.
2 zak555
 
12.04.12
10:17
> CSV файл

так что по-твоему за файл этот ?
3 bodri
 
12.04.12
10:19
(2) wiki:CSV
4 toypaul
 
гуру
12.04.12
10:20
прочитать как ANSI, записать как UTF-8
не?
5 zak555
 
12.04.12
10:20
(3) я обычно встречал ";"
6 toypaul
 
гуру
12.04.12
10:21
ТекстовыйДокумент вроде умеет в UTF-8 писать
7 dimm7310
 
12.04.12
10:29
(6) если ты про КодоваяСтраница
КодоваяСтраница(<?>)
Синтаксис:
КодоваяСтраница(<Режим>)
Назначение:
Установить режим кодировки текста.
Возвращает:
текущее числовое значение режима кодировки (на момент до исполнения метода).
Параметры:
<Режим> : 0 - windows-кодировка, 1 - DOS-кодировка.
8 toypaul
 
гуру
12.04.12
10:39
а 7.7. сбило с толку что v8 стоит.
я использовал внешнюю утилиту для перекодировки
9 miki
 
12.04.12
10:44
10 nicxxx
 
12.04.12
10:49
Функция ПреобразоватьСтрокуВУТФ8(Стр)
   Длина=СтрДлина(Стр);
   Итог="";
   Для Н=1 По Длина Цикл
       Знак=Сред(Стр,Н,1);
       Код=КодСимв(Знак);
       Если Код<128 Тогда
           Итог=Итог+Знак;
       Иначе
           Если (Код>=КодСимв("А"))И(Код<=КодСимв("п")) Тогда
               Итог=Итог+Симв(208)+Симв(144+Код-КодСимв("А"));
           ИначеЕсли (Код>=КодСимв("р"))И(Код<=КодСимв("я")) Тогда
               Итог=Итог+Симв(209)+Симв(128+Код-КодСимв("р"));
           ИначеЕсли (Знак="ё") Тогда
               Итог=Итог+Симв(209)+Симв(145);
           ИначеЕсли (Знак="Ё") Тогда
               Итог=Итог+Симв(208)+Симв(129);
           КонецЕсли;
       КонецЕсли;
   КонецЦикла;
   Возврат Итог;
КонецФункции
11 andrewks
 
12.04.12
10:50
(10) зачем велосипеды с квадратными колёсами, когда всё делается штатно?
12 nicxxx
 
12.04.12
10:54
(11) в 7.7 штатно utf-8 ? научи, а
13 andrewks
 
12.04.12
10:56
(12) О_о сбило с толку v8:  в теме
но в любом случае, даже в 7.7 это делается штатными средствами системы, через adodb, можно даже минуя запись/чтение в файл сделать, сразу в памяти
14 dimm7310
 
12.04.12
11:35
(13) а нет ли примера?
15 nicxxx
 
12.04.12
11:43
16 nicxxx
 
12.04.12
11:44
или в яндексе набери adodb.stream
17 andrewks
 
12.04.12
11:46
(15) FSO не умеет, нужен именно (16)
18 miki
 
12.04.12
11:50
(14)ты (9) осилил?
19 dimm7310
 
12.04.12
12:47
вот нашел, сейчас проверяю
Процедура Сформировать()
   Перем Имя,Путь;
   Байт=255;
   Если ФС.ВыбратьФайл(0,Имя,Путь,"","Файлы|*","*")=0 Тогда
       Возврат;
   КонецЕсли;
   СтримВход=СоздатьОбъект("ADODB.Stream");
   СтримВход.Type=2;
   СтримВход.charset="windows-1251";
   СтримВход.Open();
   СтримВход.LoadFromFile(Путь+Имя);
   СтримВыход=СоздатьОбъект("ADODB.Stream");
   СтримВыход.Type=2;
   СтримВыход.charset="utf-8";
   СтримВыход.LineSeparator=-1;
   СтримВыход.Open();
   Всего=СтримВход.size;
   Пока СтримВход.EOS=0 Цикл
       СтримВыход.WriteText(СтримВход.ReadText(Байт),?(Байт=-2,1,0));
       Состояние("" + Формат(100 * СтримВход.position/Всего,"Ч(0)5.2")+"%");
   КонецЦикла;
   СтримВыход.SaveToFile(Путь+Имя+".utf8",2);
КонецПроцедуры
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший