0

MySQL を使用して、さまざまなエンコーディングで文字を生成しようとしています。

私のスクリプトは次のようになります。

SET @id := 678;
SELECT
    @id,
    CHAR(@id USING utf32),
    CHAR(@id USING utf16),
    CHAR(@id USING utf8),
    HEX(CHAR(@id USING utf32)),
    HEX(CHAR(@id USING utf16)),
    HEX(CHAR(@id USING utf8))

私の期待される結果は次のとおりです。

678
ʦ
ʦ
ʦ
000002A6
02A6
CAA6

私が実際に得るもの:

678
ʦ
ʦ
            <-- Questionable
000002A6
02A6
02          <-- Questionable

MySQLでこれを行う方法はありますか?

アンサーレ

lanzzに感謝します。

SET @id = 45678;
SELECT
    @id,
    CHAR(@id USING utf32),
    CONVERT(CHAR(@id USING utf32) USING utf16),
    CONVERT(CHAR(@id USING utf32) USING utf8),
    HEX(CHAR(@id USING utf32)),
    HEX(CONVERT(CHAR(@id USING utf32) USING utf16)),
    HEX(CONVERT(CHAR(@id USING utf32) USING utf8));

結果:

45678
뉮
뉮
뉮
0000B26E
B26E
EB89AE
4

2 に答える 2

1

試してみてくださいCONVERT(CHAR(678 USING UTF16) USING UTF8)。このCHAR()呼び出しは、Unicode 文字コードを実際の文字列にCONVERT()変換し、その文字列を実際の UTF8 に変換します。

于 2012-05-30T12:39:03.273 に答える
0

UTF-8のバイト シーケンス0x02A6(10 進数 678) は無効です。最初のバイトは としてデコードされますU+0002が、2 番目のバイトはデコードされません。

于 2012-05-30T12:43:23.410 に答える