【问题标题】:DBVisualizer Unicode BugDBVisualizer Unicode 错误
【发布时间】:2017-04-06 19:41:47
【问题描述】:

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

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

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

【问题讨论】:

  • 注意:U+0800 和 U+FFFF 之间的代码点在 UTF-8 中被编码为 24 位(3 个字节)。
  • @RandomGuy32 它确实需要 24 位,但保留了 8 位,所以只能使用 16 位,在这 24 位中
  • 请提供更多错误渲染的字符;也许我能找到一个模式。

标签: mysql unicode utf-8 dbvisualizer


【解决方案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(“codepoint 201”),在文本中使用时编码为十六进制 C389。 (等)

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

看看你能否让 DBVisualizer 使用 UTF-8,而不是 Unicode。

【讨论】:

  • 更新了我的问题。这些实际上是十六进制值,而不是 Unicode。另外,我已将 DBVisualizer 设置设置为 UTF-8,但没有任何更改。
  • Énot Unicode C389,它是 UTF-8 C389。这些是不同的。如何在 DBVisualizer 中指定 UTF-8?您使用什么技术来发现“C389”?
猜你喜欢
  • 2015-09-12
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 2018-03-26
  • 2016-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多