Haskell HDBC-Sqlite3 всегда возвращает значения SqlByteString - PullRequest
3 голосов
/ 06 марта 2011

Я использую драйвер HDBC sqlite3 haskell для доступа к локальной базе данных sqlite3, которая

PRAGMA encoding

есть

UTF-8

И как результат, например, для

SELECT id, title FROM some_table

Я всегда получаю такой результат:

[[SqlByteString "1", SqlByteString "\210\129\123\211"], ... ]

Это странно! Да, заголовок содержит «национальные» символы, и да, я уверен, что id имеет тип INTEGER.

Итак, вопросы:

  1. Почему 1 символ Юникода обозначается как 2 ascii-подобных символа?
  2. Почему целочисленные столбцы приводят значения байтовых строк?

1 Ответ

2 голосов
/ 06 марта 2011

SQLite является нетипизированной базой данных, поэтому поля в вашей базе данных вообще не имеют типа. Вам следует преобразовать их в более хаскеллитовое значение, используя fromSql или safeFromSql из Database.HDBC.SqlValue .

...