Method Sql.mysql()->set_charset()
- Method
set_charset
void
set_charset(string
charset
)- Description
Changes the connection charset. Works similar to sending the query
SET NAMES
but also records the charset on the client side so that various client functions work correctly.charset
charset
is a MySQL charset name or the special value"unicode"
(see below). You can useSHOW CHARACTER SET
to get a list of valid charsets.Specifying
"unicode"
as charset is the same as"utf8"
except that unicode encode and decode modes are enabled too. Briefly, this means that you can send queries as unencoded unicode strings and will get back non-binary text results as unencoded unicode strings. See set_unicode_encode_mode and set_unicode_decode_mode for further details.- Throws
Throws an exception if the server doesn't support this, i.e. if the statement
SET NAMES
fails. Support for it was added in MySQL 4.1.0.- Note
If
charset
is"latin1"
and unicode encode mode is enabled (the default) then big_query can send wide unicode queries transparently if the server supports UTF-8. See set_unicode_encode_mode.- Note
If unicode decode mode is already enabled (see set_unicode_decode_mode) then this function won't affect the result charset (i.e. the MySQL system variable
character_set_results
).Actually, a query
SET character_set_results = utf8
will be sent immediately after setting the charset as above if unicode decode mode is enabled andcharset
isn't"utf8"
.- Note
You should always use either this function or the
"mysql_charset_name"
option to create to set the connection charset, or more specifically the charset that the server expects queries to have (i.e. the MySQL system variablecharacter_set_client
). Otherwise big_query might not work correctly.Afterwards you may change the system variable
character_set_connection
, and alsocharacter_set_results
if unicode decode mode isn't enabled.- Note
The MySQL
latin1
charset is close to Windowscp1252
. The difference from ISO-8859-1 is a bunch of printable chars in the range0x80..0x9f
(which contains control chars in ISO-8859-1). For instance, the euro currency sign is0x80
.You can use the
mysql-latin1
encoding in the Charset module to do conversions, or just use the special"unicode"
charset instead.- See also
get_charset, set_unicode_encode_mode, set_unicode_decode_mode