3

私はHDBCsqlite3haskellドライバーを使用してローカルsqlite3データベースにアクセスしています。

PRAGMA encoding

UTF-8

そしてその結果、例えば

SELECT id, title FROM some_table

私はいつも次のような結果を得ています:

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

それは変だ!はい、タイトルには「国」の記号が含まれています。はい、idタイプはINTEGER。です。

したがって、質問は次のとおりです。

  1. 1つのUnicodeシンボルが2つのASCIIのようなシンボルとして脅かされるのはなぜですか?
  2. 整数列がバイト文字列値になるのはなぜですか?
4

1 に答える 1

2

SQLiteは型指定されていないデータベースであるため、データベースのフィールドには実際には型がまったくありません。fromSqlDatabase.HDBC.SqlValueを使用するかsafeFromSqlDatabase.HDBC.SqlValueを使用して、それらをよりハスケルリッシュな値に変換する必要があります。

于 2011-03-06T20:30:54.117 に答える