•For a listing of gbk /Unicode mappings, see http://www.unicode.org/Public/MAPPINGS/ VENDORS/MICSFT/WINDOWS/CP936.TXT. 

It is also possible to store CJK characters in Unicode character sets, although the available collations may not sort characters quite as you expect: 

•The utf8  and ucs2  character sets support the characters from Unicode Basic Multilingual Plane (BMP). These characters have code point values between U+0000  and U+FFFF . 

•The utf8mb4 , utf16 , utf16le , and utf32  character sets support BMP characters, as well as supplementary characters that lie outside the BMP. Supplementary characters have code point values between U+10000  and U+10FFFF . 

The collation used for a Unicode character set determines the ability to sort (that is, distinguish) characters in the set: 

•Collations based on Unicode Collation Algorithm (UCA) 4.0.0 distinguish only BMP characters. 

•Collations based on UCA 5.2.0 or 9.0.0 distinguish BMP and supplementary characters. 

•Non-UCA collations may not distinguish all Unicode characters. For example, the utf8mb4 default collation is utf8mb4_general_ci , which distinguishes only BMP characters. 

Moreover, distinguishing characters is not the same as ordering them per the conventions of a given CJK language. Currently, MySQL has only one CJK-specific UCA collation, gb18030_unicode_520_ci  (which requires use of the non-Unicode gb18030  character set). 

For information about Unicode collations and their differentiating properties, including collation properties for supplementary characters, see Section 10.10.1, “Unicode Character Sets” . 

## A.11.2. I have inserted CJK characters into my table. Why does SELECT  display them as “?”  characters? 

This problem is usually due to a setting in MySQL that does not match the settings for the application program or the operating system. Here are some common steps for correcting these types of issues: 

• Be certain of what MySQL version you are using . 

Use the statement SELECT VERSION();  to determine this. 

• Make sure that the database is actually using the desired character set . 

People often think that the client character set is always the same as either the server character set or the character set used for display purposes. However, both of these are false assumptions. You can make sure by checking the result of SHOW CREATE TABLE tablename  or, better yet, by using this statement: 

SELECT character_set_name, collation_name FROM information_schema.columns WHERE table_schema = your_database_name AND table_name = your_table_name AND column_name = your_column_name; 

