These constants define integer codes that represent the various
text encodings supported by SQLite.
SQLITE_UTF8Text is encoding as UTF-8
SQLITE_UTF16LEText is encoding as UTF-16
with each code point being expressed "little endian" - the least significant
byte first. This is the usual encoding, for example on Windows.
SQLITE_UTF16BEText is encoding as UTF-16
with each code point being expressed "big endian" - the most significant
byte first. This encoding is less common, but is still sometimes seen,
specially on older systems.
SQLITE_UTF16Text is encoding as UTF-16
with each code point being expressed either little endian or as big
endian, according to the native endianness of the host computer.
SQLITE_ANYThis encoding value may only be used
to declare the preferred text for application-defined SQL functions
created using sqlite3_create_function() and similar. If the preferred
encoding (the 4th parameter to sqlite3_create_function() - the eTextRep
parameter) is SQLITE_ANY, that indicates that the function does not have
a preference regarding the text encoding of its parameters and can take
any text encoding that the SQLite core find convenient to supply. This
option is deprecated. Please do not use it in new applications.
SQLITE_UTF16_ALIGNEDThis encoding
value may be used as the 3rd parameter (the eTextRep parameter) to
sqlite3_create_collation() and similar. This encoding value means
that the application-defined collating sequence created expects its
input strings to be in UTF16 in native byte order, and that the start
of the strings must be aligned to a 2-byte boundary.
SQLITE_UTF8_ZTThis option can only be
used to specify the text encoding to strings input to
sqlite3_result_text64() and sqlite3_bind_text64().
The SQLITE_UTF8_ZT encoding means that the input string (call it "z")
is UTF-8 encoded and that it is zero-terminated. If the length parameter
(call it "n") is non-negative, this encoding option means that the caller
guarantees that z array contains at least n+1 bytes and that the z[n]
byte has a value of zero.
This option gives the same output as SQLITE_UTF8, but can be more efficient
by avoiding the need to make a copy of the input string, in some cases.
However, if z is allocated to hold fewer than n+1 bytes or if the
z[n] byte is not zero, undefined behavior may result.