That depends how the data was stored. If the database encoding is UTF-8 and the data is passed and retrieved using sqlite3_*_text APIs (which assume UTF-8 encoding) then you "get back" exactly what was provided and that "something" is not required to be UTF-8. This means that the data can be whatever silly format the person who put it there deemed to use including some 8-bit codepage, MBCS, DBCS, or whatever. There is actually no requirement that "text" actually be properly formed UTF-8 text -- that constraint only applies if you expect "conversions" within SQLite3 to work properly. If you did not depend on that, then there is no difference between a "text" and a "blob". What you "put" is what you "get".