[+/-]
- 10.1.3.1 Collation Naming Conventions
- 10.1.3.2 Server Character Set and Collation
- 10.1.3.3 Database Character Set and Collation
- 10.1.3.4 Table Character Set and Collation
- 10.1.3.5 Column Character Set and Collation
- 10.1.3.6 Character String Literal Character Set and Collation
- 10.1.3.7 The National Character Set
- 10.1.3.8 Character Set Introducers
- 10.1.3.9 Examples of Character Set and Collation Assignment
- 10.1.3.10 Compatibility with Other DBMSs
There are default settings for character sets and collations at four levels: server, database, table, and column. The description in the following sections may appear complex, but it has been found in practice that multiple-level defaulting leads to natural and obvious results.
CHARACTER SET is used in clauses that specify
a character set. CHARSET can be used as a
synonym for CHARACTER SET.
Character set issues affect not only data storage, but also
communication between client programs and the MySQL server. If
you want the client program to communicate with the server using
a character set different from the default, you'll need to
indicate which one. For example, to use the
utf8 Unicode character set, issue this
statement after connecting to the server:
SET NAMES 'utf8';For more information about character set-related issues in client/server communication, see Section 10.1.4, “Connection Character Sets and Collations”.
Suppose you have specified a default character set for your database, e.g. 'latin1', with a (deviating) default collation ('latin1_bin'). Now you create a table with default character set 'latin1', but no default collation. The default collation of the table will now be the one of the character set ('latin1_swedish_ci'), and not the one you used on the higher level as default collation for the same character set ('latin1_bin'). (Established in MySQL 4.1)
I'm amazed this startup option is hidden so deep in the documentation, since it seems like many administrators who specify alternate character sets on startup would want the clients to use the server character sets when possible.
Here's an example for the [mysqld] section of your my.cnf:
> skip-character-set-client-handshake
> collation_server=utf8_unicode_ci
> character_set_server=utf8