- Method
set_charset
void set_charset(string charset)
- Description
Changes the connection charset. Works similar to sending the query
SET NAMES charset
but also records the charset on the
client side so that various client functions work correctly.
charset is a MySQL charset name or the special value
"unicode"
(see below). You can use SHOW 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 and charset 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 variable
character_set_client
). Otherwise big_query might not
work correctly.
Afterwards you may change the system variable
character_set_connection
, and also
character_set_results
if unicode decode mode isn't
enabled.
- Note
The MySQL latin1
charset is close to Windows
cp1252
. The difference from ISO-8859-1 is a bunch of
printable chars in the range 0x80..0x9f
(which contains
control chars in ISO-8859-1). For instance, the euro currency
sign is 0x80
.
You can use the mysql-latin1
encoding in the
Locale.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