Sre*_*vil 2 java eclipse unicode supplementary utf-8
我正在解决一个 CJK 字符显示错误的 bug。\n我正在 Eclipse 中使用一个简单的程序进行测试,在调试调试器的“变量”部分时错误地显示了一个 CJK 字符。请参阅下面的屏幕截图。\n我刚刚将“\xe9\x87\x8e\xe5\xae\xb6xyz”值分配给变量,而 Eclipse 调试器显示错误。字符“\”是代理对,被替换为正方形。但是当我使用 sysout 打印它时,它显示正确。使用的默认字符集是“UTF-8”,您可以从控制台中打印的第一行看到。有人可以帮助我理解为什么 eclipse 显示错误吗?
\n\n字符“”是 Unicode 所说的补充字符,代码点为U+20BB7,其 UTF-8 编码为 F0 A0 AE B7。
对此类字符的支持仅在JSR 204的1.5版中添加到 Java 中,但 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 组件的错误跟踪器位于此处。
| 归档时间: |
|
| 查看次数: |
252 次 |
| 最近记录: |