Имя: Пароль:
1C
 
Преобразование кодировки в 1С 8
0 Незнайкин
 
12.05.10
12:50
Задача: есть строка в cp866 (в общем случае - в любой заданной кодировке), нужно получить строку в win1251. Значение строки хранится в переменной.
Есть готовый инструмент в 1С 8.1 ?
1 XLife
 
12.05.10
12:54
смотри параметр <Тип файла> в методах Прочитать(), Записать() у объекта Текстовый документ
2 Kashemir
 
12.05.10
12:55
ТекстовыйДокумент (TextDocument)
Прочитать (Read)
Синтаксис:
Прочитать(<Имя файла>, <Тип файла>, <Разделитель строк>)
3 Незнайкин
 
12.05.10
12:56
(1) (2)  Да, но у меня строка уже есть в переменной, она не в текстовом файле! Получается ее нужно записать во временный файл, а потом оттуда прочитать в нужной кодировке? а без использования временных файлов это можно сделать?
4 shuhard
 
12.05.10
12:58
(3) в поиск
ключевое ADODB + Stream
5 Лефмихалыч
 
12.05.10
12:58
(3) ты ее откуда берешь? из воздуха?
6 Незнайкин
 
12.05.10
13:06
(5) из PostgreSQL, кодировка базы - CP1251, но в одной корявой таблице есть столбец, в котором (так вот вышло) строки в cp866
править базу PostgreSQL возможности нет, с ней работает отдельное приложение, причем вот так странно пишет (в cp866)
7 Jaap Vduul
 
12.05.10
13:17
(6)Через ADO что-ли читаешь?
У PostgreSQL вроде функция для перекодировки есть - что-то вроде
convert(кракозябры using 866_to_utf_8)
8 Незнайкин
 
12.05.10
13:33
(6) Да, через ADO. Большое спасибо!
В PostgreSQL правда есть разные функции для перекодировки, использовал convert_from:

SELECT
...
convert_from(cast(payments.other as bytea), 'win866') AS myfield
...
FROM
mytable
...

Теперь в результатах запросов все нормально
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший