MySQL CHAR() Function and UTF8 Output?

前端 未结 2 1050
暖寄归人
暖寄归人 2021-01-05 14:47
+--------------------------+--------------------------------------------------------+
| Variable_name            | Value                                                  |         


        
2条回答
  •  -上瘾入骨i
    2021-01-05 15:35

    Adding to Martin's answer:

    1. You can use an "introducer" instead of the CHAR() function. To do this, you specify the encoding, prefixed with an underscore, before the code point:

      _utf16 0xFC
      

      or:

      _utf16 0x00FC
      
    2. If the goal is to specify the code point instead of the encoded byte sequence, then you need to use an encoding in which the code point value just happens to be the encoded byte sequence. For example, as shown in Martin's answer, 0x00FC is both the code point value for ü and the encoded byte sequence for ucs2 / utf16 (they are effectively the same encoding for BMP characters, but I prefer to use "utf16" as it is consistent with "utf8" and "utf32", consistent in the "utf" theme).

      But, utf16 only works for BMP characters (code points U+0000 - U+FFFF) in terms of specifying the code point value. If you want a Supplementary Character, then you will need to use the utf32 encoding. Not only does _utf32 0xFC return ü, but:

      _utf32 0x1F47E
      

      returns: 👾

    For more details on these options, plus Unicode escape sequences for other languages and platforms, please see my post:

    Unicode Escape Sequences Across Various Languages and Platforms (including Supplementary Characters)

提交回复
热议问题