Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error: Illegal :utf-8 character starting at position 11. #5

Closed
LinkFly opened this issue Oct 22, 2013 · 5 comments
Closed

Error: Illegal :utf-8 character starting at position 11. #5

LinkFly opened this issue Oct 22, 2013 · 5 comments

Comments

@LinkFly
Copy link

LinkFly commented Oct 22, 2013

Добрый день. Мы используем базу firebird с кодировкой windows-1251 (по историческим причинам). Видимо поэтому появляется эта (указанная в заголовке) ошибка. Предусмотрена ли возможность настроить cl-fbclient для работы с БД в определённой кодировке?

@LinkFly
Copy link
Author

LinkFly commented Oct 22, 2013

Решил проблему подобным кодом:

(let ((cffi:*default-foreign-encoding* :windows-1251))
                   (fb-query-fetch-all *default-database* "select first 2 id, short_name from product"))

Предлагаю добавить в класс fb-database слот encoding и соответственно initarg - :encoding. И использовать значение этого слота при вызове ф-ий cffi:foreign-string-to-lisp и подобных.

@klimenko-serj
Copy link
Owner

Да, у меня была такая мысль, почему-то решил, что через
cffi:default-foreign-encoding будет проще. Пересмотрю.
Кстати вместо (fb-query-fetch-all default-database "select first 2 id,
short_name from product")) можно использовать макрос fb-query:
https://github.com/klimenko-serj/cl-fbclient/wiki/fb-query-macro
а если вместо default-database использовать database-toplevel и
fb-with-toplevel-connection, то можно писать просто: (fb-query "select
first 2 id, short_name from product")

У меня к вам вопрос: сталкивались ли вы с проблемами в многопоточных
приложениях? Я обнаружил некоторые проблемы в fbclient.dll (именно под
Windows, под Linux все работает нормально.), и пока не знаю как их обойти.

2013/10/22 Sergey Katrevich notifications@github.com

Решил проблему подобным кодом:
(let ((cffi:default-foreign-encoding :windows-1251))
(fb-query-fetch-all default-database "select first 2 id, short_name
from product"))

Предлагаю добавить в класс fb-database слот encoding и соответственно
initarg - :encoding. И использовать значение этого слота при вызове ф-ий
cffi:foreign-string-to-lisp и подобных.

Reply to this email directly or view it on GitHubhttps://github.com//issues/5#issuecomment-26793154
.

@LinkFly
Copy link
Author

LinkFly commented Oct 25, 2013

Спасибо за подсказки!
Нет, я не сталкивался. У нас на стороне сервера используется odbc драйвер (и лисповый биндинг к нему sql-odbc) На cl-fbclient пока только в процессе перехода (если получится - сейчас выявилась странная ошибка с удалением таблицы в том же коннекте, в случае если были произведены какие-либо операции с данными этой таблицы: #6 ). В "Firebird ODBC Конфигуратор" (Администрирование -> Источник данных ODBC) стоит галка "Потоко-безопасный источник". Что она значит? Возможно то, что драйвер ODBC не будет работать в многопоточном режиме с fbclient.dll.

Скорее всего нам понадобиться работать в fbclient в многопоточном режиме (и именно под Windows). В связи с этим, можно поподробней - какие именно возникли проблемы?

@klimenko-serj
Copy link
Owner

добавил поле :encoding в класс fb-database.
Проверяйте.

@LinkFly
Copy link
Author

LinkFly commented Dec 12, 2013

Спасибо, используем.

@LinkFly LinkFly closed this as completed Dec 12, 2013
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants