我正在解决 CJK 字符显示错误的错误。 我正在 Eclipse 中使用一个简单的程序进行测试,在调试调试器的“变量”部分时,错误地显示了一个 CJK 字符。请参阅下面的屏幕截图。 我刚刚将“𠮷野家xyz”值分配给变量,而 Eclipse 调试器显示错误。字符“𠮷”是代理对,被替换为正方形。但是当我使用 sysout 打印它时,它显示正确。使用的默认字符集是“UTF-8”,您可以从控制台中打印的第一行看到。有人可以帮助我理解为什么 eclipse 显示错误吗?
最佳答案
字符“𠮷”在 Unicode 中被称为 supplementary character代码点 U+20BB7其UTF-8编码为F0 A0 AE B7。
仅在 Java 版本 1.5 中添加了对此类字符的支持通过 JSR 204 ,但是 Eclipse 的 jdt.debug 中读取 UTF-8 格式字符串的代码比这更旧。
如果你看看 org.eclipse.jdi.internal.jdwp.JdwpString.read(DataInputStream) 的实现,您可以看到它从未更新来处理补充字符(具有以 0xF* 开头的四个字节序列)。
它只是检查第一个字节的高半字节 >= 14 (0xE),有效地将字符的 UTF-8 序列解释为 E0 A0 AE B7,对应于序列 U+082E U+00B7。 U+082E不是有效的 unicode 字符,这就是为其绘制矩形的原因。
如果您想报告此问题,此 Eclipse 组件的错误跟踪器是 here .
关于java - Eclipse 调试器错误地显示 cjk 字符 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72212106/