java - Eclipse 调试器错误地显示 cjk 字符 - Java

标签 java eclipse unicode utf-8 supplementary

我正在解决 CJK 字符显示错误的错误。 我正在 Eclipse 中使用一个简单的程序进行测试,在调试调试器的“变量”部分时,错误地显示了一个 CJK 字符。请参阅下面的屏幕截图。 我刚刚将“𠮷野家xyz”值分配给变量,而 Eclipse 调试器显示错误。字符“𠮷”是代理对,被替换为正方形。但是当我使用 sysout 打印它时,它显示正确。使用的默认字符集是“UTF-8”,您可以从控制台中打印的第一行看到。有人可以帮助我理解为什么 eclipse 显示错误吗?

Eclipse 错误地显示了 CJK 字符: Eclipse showing CJK character wrongly

最佳答案

字符“𠮷”在 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/

相关文章:

python - 将url编码的字符串转换为python unicode字符串

java - 几个 "ChildException"捕获 block 与一个 "Exception"捕获 block

java - OpenGL : Create proxy user for shader

eclipse - 更改 Google App Engine 的地址端口 - Eclipse

java在eclipse中赋予管理员权限

c++ - 如何在 C++ 中大写/小写 UTF-8 字符?

java - 如何使用@RequestBody 或@RequestParam 接收 json 对象

java - Mockito - 所需返回的模拟对象未在测试类(CUT)中使用

android - 无法初始化类 sun.awt.X11.XToolkit

javascript - 在 Mac 上的 Chrome 中查看希伯来语字体时出现问题