0

在具有 Charset UTF-8和 Collat​​ion UTF-8(É (0xC389) and П (0xD0BF))的数据库表中插入两个字符时,我遇到了问题。这两个字符都在范围内U+0800 - U+FFFF。所以,我知道这两个字符需要16 bits

奇怪的是,É (0xC389)正在从 DBVisualizer 插入表中并正常显示但未П (0xD0BF)正确保存。我首先想到,可能是客户端问题,但为什么它发生在与另一个字符在同一范围内的 1 个字符上?

我对这种行为感到非常惊讶。所以,我不明白,如果我对 UTF-8 的理解是错误的,或者它真的是一个 DBVisualizer 错误,或者我错过了什么?

4

1 回答 1

1

你的第一句话是错误的。

你在看拉丁文和西里尔文的混合体吗?还是韩文?

UTF-8 Hex    Unicode  Visible    Meaning
C389        201=x00C9   É        LATIN CAPITAL LETTER E WITH ACUTE
D09F       1055=x041F   П        CYRILLIC CAPITAL LETTER PE
EC8E89          xC389   쎉       HANGUL SYLLABLE SSENJ
ED82BF          xD0BF   킿       HANGUL SYLLABLE KIH

也就是说,É是 Unicode (“codepoint 201”),在文本中使用时U+00C9被编码为十六进制。C389(ETC)

前两个在 UTF-8 中需要 16 位;另外两个需要24位。MySQL 的CHARACTER SETutf8 或 utf8mb4 也是如此。

看看您是否可以让 DBVisualizer 使用 UTF-8,而不是 Unicode。

于 2017-04-09T03:49:12.437 回答