Java文本字段不显示Unicode字符

时间:2019-01-21 12:01:19

标签: java unicode

我需要用手持扫描仪扫描QRCode(GS1标准)并将其解析为4个元素。
这4个元素中的2个元素的长度可变,因此后跟“ GS” GLOBAL_SEPARATOR \u001D

读取 QRCode 的示例:

01076127912745342191509713306750**GS**10SHU42**GS**17201231

在此图像上,您可以从NotePad ++中看到“ GS” GLOBAL_SEPARATOR UNICODE

enter image description here

但是,当我从javafx文本字段中的扫描仪中的手动读取QRCode时,我制作时不会显示Unicode字符GLOBAL_SEPARATOR

myTextField.getText() => 0107612791274534219150971330675010SHU417201231.

如何读取文本字段中的unicode字符以正确解析它?

谢谢

更新: 使用getBytes时,GS组分隔符不在

`public static void main(String[] args) {
        System.out.println("Scan= ");
        BufferedReader buffer;
        int charRead;
        StringBuffer sb = new StringBuffer();
        String linein;

        try {
            buffer = new BufferedReader(new InputStreamReader(System.in, "UTF-8"));

            linein = buffer.readLine();

            byte[] b = linein.getBytes("UTF-8");

            // Displaying converted string after conversion 
            System.out.println("The String after conversion is : ");
            for (int i = 0; i < b.length; i++) {
                System.out.print(b[i]);
            }


        } catch (IOException e1) {
            System.out.println(e1.getMessage());
            e1.printStackTrace();
        }

    }`

GS应该在4849之间,但是什么也没有 48494855544950555749505552535152504957495348575549515148545553**4849**4883728552504955504849505149

WORKAROUND:

在手上配置条形码扫描仪字符转换,以将GS转换为您可以选择的任何其他字符,例如“;”扫描二维码时

唯一的缺点:在使用软件之前需要在扫描仪中进行配置

1 个答案:

答案 0 :(得分:1)

您可以自己实现TextField。 只需复制TextField类并更改一些“插入”方法即可。 删除TextInputControl.filterInput(text,true,true)-在这里,您松开了GS分隔符。