вторник, 16 ноября 2010 г.

cl-mssql и FreeTDS-0.82

Обновил у себя FreeTDS до версии 0.82 и обнаружил проблемы с кодировками. Я использую cl-mssql для взаимодействия с 1С, данные там лежат в кодировке cp1251, а у меня в системе используется utf-8. Версия FreeTDS-0.62 кажется вообще никак не учитывала кодировки, поэтому в cl-mssql есть параметр соединения :external-format, который использовался для настройки переменной cffi:*default-foreign-encoding* - я устанавливал его в :cp1251 и спокойно работал. Версия FreeTDS-0.82 уже относится к этому не так просто и, вероятно, самостоятельно занимается перекодированием строк (а может как-то по другому взаимодействует с сервером, я не спец в этом вопросе). Теперь приходиться настраивать кодировку в /etc/freetds.conf:
[global]
client charset = utf8
Кодировка, указанная в /etc/freetds.conf, должна совпадать с кодировкой, которая указывается в mssql:connect (по-умолчанию - :utf-8).

2 комментария:

  1. А клиент-специфичных конфигов у него нету? Навроде ~/.my.cnf или ~/.pg*

    ОтветитьУдалить
  2. @Andor

    У FreeTDS? Есть ~/.freetds.conf, но он читается ДО /etc/freetds.conf, также вроде можно настраивать путь к конфигу через переменную окружения FREETDSCONF. Но, вообще, я использую это не от большой любви, а от острой необходимости, так что не большой эксперт в этом вопросе.

    ОтветитьУдалить