The manual clearly states ” ucs2 cannot be used as a client character set, which means that it does not work for SET NAMES or SET CHARACTER SET”. So how can I insert, for example, the codepoint U+2193? I am using PHP 5.3 + PDO.
Share
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
If you want to use Unicode for communicating with a MySQL server, your only option is to use UTF-8.
If you’re working with UCS-2 or UTF-16 strings in PHP now, you’ll have to convert them to UTF-8 before trying to store them. Also note that MySQL will give you back UTF-8 if that’s what you set your client character set to, so you’ll need to convert query results as well if you’re committed to working with UCS-2 on the PHP side. (If you’re in a position to make bigger changes, you’d likely be better off simply using UTF-8 everywhere than doing all this extra conversion.)
As for storing the codepoint U+2193, no worries: UTF-8 can represent every Unicode codepoint (in this specific case, it’d be
0xE2 0x86 0x93).Technically, this is fudging a little, since MySQL’s
utf8anducs2character sets only cover a subset of Unicode called the Basic Multilingual Plane (BMP). The world of Unicode charsets is expanded in MySQL 5.5 to move beyond the BMP, but you still can’t useucs2, the newutf16orutf32charsets as client charsets, leaving you still stuck with UTF-8.