[Haskell-cafe] Re: HDBC, character encoding
Peter Gammie
peteg42 at gmail.com
Fri Apr 4 02:06:21 EDT 2008
On 03/04/2008, at 9:10 PM, John Goerzen wrote:
> On 2008-04-01, Peter Gammie <peteg42 at gmail.com> wrote:
>> I added some stuff to HSQL (not HDBC) and HaskellDB so that UTF8 can
>> be used to talk to the database. It's not very pretty though, so I
>> haven't tried to get it merged.
>
> Do you have a diff somewhere? I'd be interested in your approach, to
> see if the same thing would make sense in HDBC.
My approach is simple: when creating a connection to the database, ask
for two functions (a codec pair) and stash them with the rest of the
DB state. The types involved are [Word8] and String. I started out
trying to use ByteString instead of [Word8] but it didn't bring much
to the table in my case.
> I had generally been of the opinion that HDBC should just pass data
> through, however it is obtained, and let the programmer set the
> encoding as desired. If this approach isn't working for people, I'd
> like to fix it, but want to make sure it's done right.
Assuming you're talking about the FFI's mandated behaviour, I'm not
very comfortable with the encoding depending on the C locale, for two
main reasons:
- the program I'm hacking runs on some web host's server that is an
unknown quantity.
- GHC has a few quirks in how it implements the FFI, better to avoid
the part that interprets characters.
If you want to be general, I guess you could abandon String (at the
HDBC level) and use [Word8]/ByteString everywhere, then provide some
convenience wrappers. Then you can uniformly handle binary and textual
data. I am not familiar with your project though.
cheers
peter
More information about the Haskell-Cafe
mailing list