繁体   English   中英

Java读卡器出现乱码

[英]Java card reader garbled

我有一台便宜的磁卡读卡器,它的作用就像键盘一样。 我将其连接并刷卡,然后它将所有卡数据输入计算机。 但是由于某种原因,它在Java中不起作用。 它确实可以在我尝试过的所有非Java语言中使用。

卡上的内容(SO编辑器中实际刷卡的内容):

;00548757802?

使用Java时:

;0◘)P87┼7\02?
_005487578D♥
;005487G802?
_005*J657802{
♣00548I5♣802?
;≥T548757♠╢·?
≥T54875I↑:?

如您所见,每次都不同。 但是,阅读器会在数据之后发送换行符,Java确实可以识别出换行符。

我的读取输入代码:

// Bound to a JTextField
public void keyTyped(KeyEvent e) {
    System.out.print(e.getKeyChar());
}

JTextField也显示乱码。

这有什么问题,我该如何解决?

看起来您已经向JTextField添加了KeyListener ,它使用了特定于每个平台的键绑定 而是使用BufferedReader读取System.in ; readLine()方法应该能够检测到行尾。

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

为了避免阻塞事件调度线程 ,请在SwingWorker的后台进行I / O,在可用时publish() ,并在process()实现中更新JTextField

好吧,我知道了。 我便宜的15美元读卡器被设置为使用替代代码进行数据输入,而不是简单的按键操作。 我可以使用网上找到的实用程序对它进行重新编程,以模拟普通键盘,而不必为每个字符输入替代代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM