首页 > 解决方案 > Java 文本字段不显示 Unicode 字符

问题描述

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

二维码读取示例:

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

在这张图片上,您可以看到 NotePad++ 中的“GS”GLOBAL_SEPARATOR UNICODE

在此处输入图像描述

但是,当我从 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

解决方法:

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

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

标签: javaunicode

解决方案


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


推荐阅读