DBVisualizer Unicode Bug

时间:2017-04-06 19:41:48

标签: mysql unicode utf-8 dbvisualizer

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

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

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

1 个答案:

答案 0 :(得分: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 U+00C9("代码点201"),并且在文本中使用时编码为十六进制C389。 (ETC)

前两个需要16位UTF-8;另外两个需要24位。对于MySQL的CHARACTER SET utf8或utf8mb4也是如此。

看看你是否可以让DBVisualizer谈论UTF-8,而不是Unicode。