提问人:Jarred 提问时间:10/19/2023 最后编辑:Jarred 更新时间:10/19/2023 访问量:44
JavaFX,Alt+Num (0-127) 不同,Java 7u80(乱码)与 Java 8u202(普通 ASCII),两者都是默认聊天集 UTF-8
JavaFX, Alt+Num (0-127) different for Java 7u80 (gibberish) vs Java 8u202 (normal ASCII), both default chatset UTF-8
问:
我有一个ooold JavaFX项目(2015),我必须在其中添加扫描器功能。 扫描程序通常通过 ALT+Num 序列发送字符。 例如,ALT+(Num5 后跟 Num0) 生成表示 2 的字符。 点击键盘按钮也会发生相同的行为。 问题与扫描仪无关。我稍后会解释原因。 键盘布局贯穿整个测试和运行过程。
这在 Java 8 中编译时可以完美运行(oracle 存档,更新 202 下)。 但是在 Java 7(oracle 存档,更新 80)中返回奇怪的字符。 我不认识这些,也不认为是任何人类语言,也不认识 ascii(或扩展的 ascii https://www.asciitable.com/)。
- 爪哇 8:1;2;3;4;5;6;7;8;23.266.007(正确)
- Java 7: “ß|߇ß'ßß ̈ß+ß3/4ß|‡r| ̈ ̈rˆˆ+ (是错误的)
字符由事件过滤器 KeyEvent.KEY_TYPED、keyEvent.getCharacter() 检索
使用 IntelliJ IDEA 编译。Win11的,
- Java 7 的语言级别为“7 - Diamonds”。
- 语言级别为“8 - Lambdas”的 Java 8。
JavaFX 2.2.3 与 Java7 与 Java8 有什么组合吗 这可能会将基本的 ASCII 表更改为其他内容?
我检查的第一件事是 Charset.defaultCharset(),但它为两个 java 版本返回了 UTF-8。 即使扫描仪仅用于扫描 Numbers,.(点)、/(斜杠)和 -(减号) 从 ASCII 最基本的 127 个前字符开始,所以不会受到代码页的影响吗? 无论是通过设备扫描还是从键盘输入都无关紧要。
扫描器说明:无论 Java 版本如何,扫描器都会输入 (ALT + Num5 + Num5)。 但是在 Java 8 的情况下,正如预期的那样,它是 ASCII '7'。如果我没记错的话,在 Java7 中,它是一个“+”。 即使我使用键盘和 Alt+Num5+Num5 方法,我也会得到与扫描仪相同的字符, 对于每个 Java 版本。
我用 Java 7 和记事本窗口做了一个额外的测试。 记事本以正确的格式显示扫描的数字 12.345.678, 但是 Java 应用程序完全是胡言乱语。
感谢您的任何建议!
答: 暂无答案
评论