Ensure that TEXT column is UTF-8 encoded before using sqlite3_column_blob() #387
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
If the database is in a different format (ie. UTF-16) the memory that sqlite3_column_blob() will point to by default will be the native (UTF-16) encoding. Calling sqlite3_column_bytes() will basically be a noop for a BLOB or a TEXT already in UTF-8. Otherwise it'll convert to TEXT w/UTF-8.
Run the 'basis' tests against both a UTF-8 and a UTF-16 database. Reset & rerun query between tests blocks to reset column types. Reorder a few getText()/getString() operations to ensure we test both ordering. Don't try to convert random blob to TEXT. Will fail encoding conversion.
Extracted from #379 by @dougnazar