Pike strings are defined as strings of 32-bit values. If you expect to store a string in SQLite and read it back exactly as it was, you have to encode it in some way. Using UTF-8 (which is standardized and in wide use) seems to be better than inventing the umpteenth proprietary encoding.
Hm, I have no idea how this is solved in other databases, but generally it seems like this encoding should be forced upon the writer of the program, not implicitly in the glue...
Nothing else what I know of has this encoding implicitely, maybe with the exception of Protocols.HTTP. You can't send strings to for instance write or Image.JPEG.decode if they aren't 8-bit already.
What kind of strings does SQLite expect? Can it use UTF8 strings? Does it support some kind of pattern search that are actually broken by UTF8 encoding?