MySQL don't want to store unicode character

本秂侑毒 提交于 2019-11-26 20:28:04

问题


Why won't MySQL store the unicode character 𫗮? Yes, it is a rare hieroglyph, you wouldn't see it in the browser.
UTF16 is U+2B5EE

Warning: #1366 Incorrect string value: '\xF0\xAB\x97\xAE' for column 'ch' at row 1

Is it possible to store this character in MySQL?


回答1:


MySQL only supports characters from the basic multilingual plane (0x0000 - 0xFFFF).

Your character is out if this plane.

Try storing a synonym instead :)

Update:

MySQL 5.5.3 and on (which has not gone GA yet) does support supplementary characters if you use UTF8MB4 encoding.




回答2:


First: your statement

UTF16 is U+2B5EE

is slightly wrong. U+2B5EE is the notation for a Unicode codepoint, just a integer number- an abstract code- while UTF16 is a charset encoding (one of possible Unicode encodings, as is UTF-8).

Now, assuming that you mean the codepoint, U+2B5EE is outside the BMP (first 64K unicode codepoints), and it seems mysql have little or no support for them. So I suspect you are out of luck.




回答3:


Since this question was posted, MySQL 5.5.3 was released which supports the utf8mb4 encoding which offers full Unicode support. Switching to this charset instead of utf8 would fix your problem.

I’ve recently written a detailed guide on how to switch from MySQL’s utf8 to utf8mb4. If you follow the steps there, everything should work correctly. Here are direct links to each individual step in the process:

  • Step 1: Create a backup
  • Step 2: Upgrade the MySQL server
  • Step 3: Modify databases, tables, and columns
  • Step 4: Check the maximum length of columns and index keys
  • Step 5: Modify connection, client, and server character sets
  • Step 6: Repair and optimize all tables

I suspect that your problem can be solved by following step 5. Hope this helps!



来源:https://stackoverflow.com/questions/2692188/mysql-dont-want-to-store-unicode-character

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!