首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >此代码正确地输出内部代码中的汉字,同时将从扫描仪捕获的汉字作为垃圾输出

此代码正确地输出内部代码中的汉字,同时将从扫描仪捕获的汉字作为垃圾输出
EN

Stack Overflow用户
提问于 2019-12-10 16:12:48
回答 1查看 75关注 0票数 3

我正在试着从扫描仪中抓取汉字。

我在Windows10上运行的是cmd.exe。

我已经运行了CHCP 65001。

下面是代码。

代码语言:javascript
复制
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提醒,似乎收到的字符已经损坏,因为输出是

代码语言:javascript
复制
Hello, ��
20013
96

此代码正确地输出代码内部的汉字,同时将从扫描仪捕获的汉字作为垃圾输出。

如何解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2019-12-10 16:29:47

有几件事可能会导致这个问题。其中之一就是你的windows环境中的字符集。我建议一个诊断工具,它可以帮助你诊断你的问题,进而引导你找到合适的解决方案。有一个开源java库MgntUtils,它有一个实用程序,可以将字符串转换为unicode序列,反之亦然:

代码语言:javascript
复制
result = "Hello World";
result = StringUnicodeEncoderDecoder.encodeStringToUnicodeSequence(result);
System.out.println(result);
result = StringUnicodeEncoderDecoder.decodeUnicodeSequenceToString(result);
System.out.println(result);

此代码的输出为:

代码语言:javascript
复制
\u0048\u0065\u006c\u006c\u006f\u0020\u0057\u006f\u0072\u006c\u0064
Hello World

该库可以在Maven CentralGithub上找到,它以maven工件的形式提供,并带有源代码和JavaDoc。下面是类StringUnicodeEncoderDecoder的JavaDoc。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59262800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档