gpt4 book ai didi

java - 此代码正确输出代码内的汉字,而将扫描仪捕获的汉字作为垃圾输出

转载 作者:行者123 更新时间:2023-12-03 01:44:14 24 4
gpt4 key购买 nike

我正在尝试从扫描仪中捕获汉字。

我在 Windows 10 上的 cmd.exe 中运行。

我已经运行了 CHCP 65001。

enter image description here

这是代码。

import java.util.Scanner;

public class JavaScannerCN
{
public static void main (String[] args)
{
Scanner scanner = new Scanner(System.in);
System.out.print("中文 user name: ");
String username = scanner.next();
scanner.close();
System.out.println(String.format("Hello, %s", username));
System.out.println((int)'中');
System.out.println((int)username.charAt(0));
}
}

感谢@ParkerHalo提醒,看来收到的字符已损坏,因为输出是

Hello, ��
20013
96

此代码正确输出代码内的汉字,而将扫描仪捕获的汉字作为垃圾输出。

如何解决这个问题?

最佳答案

有一些原因可能会导致此问题。其中之一是 Windows 环境中的字符集。我建议使用一种诊断工具来帮助您诊断问题,进而引导您找到适当的解决方案。有一个开源 java 库 MgntUtils,它有一个实用程序,可以将字符串转换为 unicode 序列,反之亦然:

result = "Hello World";
result = StringUnicodeEncoderDecoder.encodeStringToUnicodeSequence(result);
System.out.println(result);
result = StringUnicodeEncoderDecoder.decodeUnicodeSequenceToString(result);
System.out.println(result);

这段代码的输出是:

\u0048\u0065\u006c\u006c\u006f\u0020\u0057\u006f\u0072\u006c\u0064
Hello World

可以在 Maven Central 找到该库或在 Github它作为 Maven 工件提供,并带有源代码和 JavaDoc。这是类 StringUnicodeEncoderDecoder 的 JavaDoc 。

我建议您将从扫描仪收到的输入字符串转换为 Unicode 序列,这将帮助您了解您收到的信息是否已经损坏,或者您的问题是显示问题。

关于java - 此代码正确输出代码内的汉字,而将扫描仪捕获的汉字作为垃圾输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59262800/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com