天道酬勤,学无止境

在java中解析汉字显示奇怪的行为(parsing chinese characters in java showing weird behaviour)

问题

我有一个 csv 文件,其中有一些包含中文字符串的字段。 不幸的是,我不知道这个输入 csv 文件的编码是什么。 我正在尝试读取此输入 csv 并使用其中的选择性字段,我正在制作一个 html 和另一个 csv 文件作为输出。

在读取 csv 输入时,我尝试了列表 http://docs.oracle.com/javase/7/docs/technotes/guides/intl/encoding.doc.html 中的所有编码,其中在描述提到了中文。 并发现如果我使用

InputStreamReader read = new InputStreamReader(filepath,"GB18030");

用于读取 csv 和

OutputStreamWriter osW=new OutputStreamWriter(objBufferedOutputStream,"UTF-16");

对于编写 html 和 csv,我的输出没有显示奇怪的字符。

但是,有两个问题:

  1. 输出显示的字符串与输入完全不同! 我的意思是,即使我没有对我的代码中的任何字符串进行任何处理,在输入 csv 的任何字段中都找不到输出。

例如,我的输入有一个中文字符字符串:陈真珍在字段编号 8 上。但我的输出 html 有类似:闄堢湡鐝 ,它对应于输入字段编号 8。

  1. 正如你所看到的,有一个问号,即在输出闄堢湡鐝

我请求你帮助我追踪这里哪里可能出错......

PS:Aiso,我查了谷歌翻译发现,输入字符串陈真珍的意思是一些陈真珍

其对应的输出串“闄堢湡鐝”的意思是叫“妖宝玉绝”,所以在字义和表示上也有区别。

回答1

该输出意味着您的输入不是 GB18030 编码。

另外:请检查并仔细检查您查看文件的方式:程序使用什么编码打开文件,特别是输入文件。 通常文本文件(和 CSV 文件)不附带显示其编码的元数据,因此编辑人员必须猜测,而这种猜测很容易出错。

回答2

读/写汉字时请保持前后一致。 由于某些汉字可能无法用所有的编码来表示,例如 GBK、GB18030 等。

您可以尝试使用UTF-8 编码来处理汉字。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 如何在Java中使用Scanner正确读取汉字?(How can I read Chinese characters correctly using Scanner in Java?)
    问题 编程语言:Java 任务:设计一个将中文字符串映射到数字的哈希函数问题:正确读取和显示汉字 这是一道作业题,但我不是问怎么做,只是在实现汉字的阅读时遇到了麻烦。 我的任务的简短描述:设计一个哈希函数,将我们班上(中国)学生的姓名映射到他们的学生 ID 和其他卫星数据(性别、电话等)。 我还在考虑它,但就像其他语言一样,如果我没记错的话,它的范围涉及我使用字符的字符编码,通过哈希函数得出一个唯一值。 以下是我必须测试此思路有效性的内容: // test whether console can read chinese characters Scanner s = new Scanner(System.in); System.out.print("Please enter a Chinese character: "); int chi = (int)s.next().toCharArray()[0]; System.out.println("\nThe string entered is " + chi); 如果我使用简单的 System.out.println("character") 语句,则会显示正确的字符。 但如上所示,如果我使用 Scanner 读取输入,我尝试将 String 转换为 char 数组,然后转换为等效的 int unicode,但它提供了一个荒谬的数字
  • Android : 如何去除汉字中的空格?(Android : How to remove white spaces in Chinese characters?)
    问题 我在修剪汉字中的空格时遇到问题。 我试图记录内容,这是它的样子: 在textview中显示时,确实显示汉字,但问题是字符串文本前后有空格。 有人可以帮我编码/解码这个吗? 提前致谢。 编辑 1:添加了结果的屏幕截图。 编辑 2:添加内容字符集作为响应。 HttpProtocolParams.setContentCharset(params, HTTP.UTF_8); 但是我在记录和以 XML 布局显示时仍然得到方形字符,方形字符变成空格。 编辑 3:添加了我的工作解决方案。 private String removeWhiteSpace(String oldString) { String newString = null; if (oldString.length() > 0) { Character c = oldString.charAt(0); boolean isWhiteSpace = Character.isWhitespace(c); if (isWhiteSpace) { newString = oldString.replace(c, ' '); } else { newString = oldString; } newString = newString.trim(); } return newString; } 回答1 中文和日文不使用常规空格字符“
  • 完美又简单解决Fedora16下使用Sun-JDK的汉字乱码(口口)问题
    这里的问题属于字体问题,只会在AWT/Swing的java程序中出现问题,原因是jre使用了不正确的fontconfig,表现为在zh_CN的窗口环境下,netbeans的菜单汉字显示为"口口",此时,jre读取的字体配置文件内容是错误的,配置文件可能是以下两个之一(这些文件跟Fedora16的中文字体配置完全不匹配):/opt/java/jdk1.6.0_32/jre/lib/ fontconfig.bfc fontconfig.RedHat.bfc注1:SWT使用操作系统原生组件,所以基本上只要窗口环境能正常显示汉字,eclipse就没问题注2:在这里不提fallback, 因为它是jdk1.4时代以前的东西参考了若干资料:[官方说明]http://docs.oracle.com/javase/1.5.0/docs/guide/intl/fontconfig.html[详细的解释]http://www.cnblogs.com/super119/archive/2011/01/03/1924534.htmlhttp://forum.ubuntu.com.cn/viewtopic.php?f=70&t=76414如果看明白上面的文档,肯定能解决问题,但问题是太麻烦了,这里介绍个捷径:1.安装sun-jdk 1.6.0_322.进入<jdk>/jre/lib目录
  • 中文 UTF-8 字符在 Weblogic 10.3 中显示不正确,但在 Tomcat 6 中没有(Chinese UTF-8 characters are appearing incorrectly in Weblogic 10.3 but not Tomcat 6)
    问题 我正在使用 Java EE 和 Spring 开发一个需要输出中文 UTF-8 字符的网站。 我有一个 servlet,它在一些处理后对 jsp 执行 request.getRequestDispatcher(...).forward(request,response) 。 在这个 servlet 中,在进行转发之前,我有 response.setCharacterEncoding("UTF-8"); response.setContentType("text/html; charset=UTF-8"); 在 jsp 文件(以及我项目中的每个 jsp 文件)的顶部,我有: <%@page language="java" pageEncoding="UTF-8" contentType="text/html;charset=UTF-8"%> 作为测试,我在该 jsp 页面上硬编码了一个中文 UTF-8 字符。 当我将此应用程序部署到 Tomcat 6 并命中 servlet 时,浏览器检测到页面为 UTF-8 并输出汉字:采 当我将此应用程序部署到 Weblogic 10 并命中 servlet 时,浏览器检测到页面为 UTF-8但显示:é 在我的weblogic启动脚本中,我尝试了-Dfile.encoding的不同java选项,比如UTF-8和utf8,但是不管设置如何
  • Java中将汉字中的字符串转换为Unicode(Convert string in Chinese character to Unicode in Java)
    问题 假设中文字符“你好”中有一个字符串,将该字符串转换为Unicode的正确结果是“\u4f60\u597d”,我从下面的代码中得到的结果是“\ufffd\ufffd\ufffd”。 为什么??? 爪哇代码: String str = "你好"; public String testEncoding(String str) { String result = ""; for(char ch : str.toCharArray()) result += "\\u" + Integer.toHexString(ch | 0x10000).substring(1); System.out.print(result); return result; } String text = testEncoding("你好"); public static void input(String text){ execShellCmd(String.format("am broadcast -a ADB_INPUT_TEXT --es msg \'%s\'", text)); } private static void execShellCmd(String cmd) { try { Process process = Runtime.getRuntime().exec("su")
  • PHP显示汉字:SET NAMES'utf8'不起作用(PHP displaying Chinese characters: SET NAMES 'utf8' not working)
    问题 我正在尝试使用现有的数据库,但是无法在其中显示汉字。 该数据库实际上首先是一个MS Access文件,我通过一个程序将其转换为mysql。 无论如何,许多行中都有中文字符,我无法在任何浏览器中正确显示它们。 否则,我可以显示汉字,如果我使用phpmyadmin查看表,我也可以看到它们。 我到处寻找解决此问题的方法,在我看来,通常的解决方法是执行“ SET NAMES'utf8'”查询,但这仅将显示的字符从问号更改为其他奇怪的符号。 如果我在phpmyadmin中查找,则数据库和所有表的排序规则都是utf8_general_ci。 有任何想法吗? 回答1 对于MySQL DB,这可以解决问题: $dbh = mysql_connect($hostname, $username, $password); mysql_select_db($db, $dbh); mysql_set_charset('utf8', $dbh); PDO解决方案: $dbh = new PDO('mysql:host=$hostname;dbname=$db;charset=UTF-8', $username, $password); 回答2 您必须确保以下几点: 导入之前,将要使用的表的字符集必须设置为utf8。 您还必须确保导入的数据实际上包含正确的utf8编码字符。 在导入时
  • 如何读取汉字中的excel文件[R]?(How to read excel file in Chinese character [R]?)
    问题 我总是将 excel 文件转换为 CSV 文件以导入到 R 如下。 myDataFrame <- read.csv("mydatafile.csv", stringsAsFactors=F) 但是,当我转换用中文编写的 xlsx 文件时,我遇到了一个严重的问题。 大多数字符(不是全部)显示 '??' 因为编码。 所以,我决定使用xlsx包直接导入。 但问题是excel文件的大小超过10MB。 由于 JVM 内存限制,它给了我一条错误消息。 (我假设xlsx内部使用 Java。) .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl, 中的错误: java.lang.OutOfMemoryError:超出 GC 开销限制 如何将中文excel文件导入R? 我尝试了“另存为..”CSV 文件,并打开它的记事本,并使用选项“UTF-8”保存它。 但结果是一样的(显示'??')。 仅供参考,我可以在原始 excel 文件中看到完整的汉字。 回答1 你的问题是一个混合的问题。 假设您已将 xlsx 文件转换为 csv。 如果您还没有,请参阅其他主题,例如此主题。 我认为这一步最好在一些外部工具中执行,而不是在 R 中执行。 现在我们有了一个 csv,还有两个问题,大小和编码。 对于编码,正如您在评论中提到的
  • 如何在PHP中正确显示中文字符?(How to properly display Chinese characters in PHP?)
    问题 我有这些汉字: 汉字/漢字''test 如果我做 echo utf8_encode($chinesevar); 它显示 ??/??''test 或者即使我只是做一个简单的 echo $chinesevar 它仍然显示一些奇怪的字符... 那么,如何在不使用<meta>标记和UTF-8事物..或ini_set UTF-8事物甚至UTF-8的header()事物的情况下显示这些汉字呢? 回答1 简单的: 将您的源代码保存在UTF-8中输出一个HTTP标头,以向浏览器指定应使用UTF-8解释页面: header('Content-Type: text/html; charset=utf-8'); 完毕。 utf8_encode用于将Latin-1编码的字符串转换为UTF-8。 不用了 有关更多详细信息,请参见在Web应用程序中处理Unicode从头到尾。 回答2 看起来您的文件在没有BOM的UTF8中,并且您的网络服务器在UTF-8中交付了您的网站 HTML: <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> 在PHP中: header('Content-Type: text/html; charset=utf-8'); 而且,如果您使用数据库,则从数据库中读取文本时,数据库将处于UTF-8。
  • 在文本视图中显示日语而不是中文(Displaying japanese instead of chinese in a textview)
    问题 在textview中显示日文文本时,android默认使用中文字体,显示错误字符,这里举例说明。 将语言环境设置为日语在模拟器上有效,但在我的 Galaxy s3 上不起作用,可能是因为它不支持日语。 还有其他解决方案是从资产以编程方式设置字体,例如: textView.setTypeface(Typeface.createFromAsset(getAssets(), "DroidSansJapanese.ttf")); 但这似乎有点混乱。 有没有办法通过xml布局将字体设置为支持日文的字体? 回答1 无法直接在 XML 中设置字体。 如果您计划使用大量日语文本视图,创建一个自定义视图来为您处理它可能更容易,它可以从其构造函数以编程方式设置字体。 然后,每当您将自定义视图放入 XML 中时,它都会具有正确的字体。 回答2 通常,在日本境外销售的较旧 (<4.1) Android 设备默认呈现汉字的中文版本。 在日本国内销售的 Android 设备默认呈现日语版本的汉字。 DroidSansJapanese 是 DroidSans 的日文字体,可在 AOSP 中使用。 在创建他们的 Android 版本时,制造商似乎可以选择在显示文本时使用系统/供应商提供的字体的偏好。 即使您在 (<4.1) 非日语设备上更改区域设置,它仍然可以显示不正确的字符版本。
  • 打印包含Python中的汉字的列表(Print a list that contains Chinese characters in Python)
    问题 我的代码如下所示: # -*- coding: utf-8 -*- print ["asdf", "中文"] print ["中文"] print "中文" Eclipse控制台中的输出非常奇怪: ['asdf', '\xe4\xb8\xad\xe6\x96\x87'] ['\xe4\xb8\xad\xe6\x96\x87'] 中文 我的第一个问题是:为什么最后一行没有得到正确的输出,而其他行却没有得到? 我的第二个问题是:我该如何纠正错误的代码(使它们输出实字符而不是以“ x”开头的代码) ? 感谢你们!! 回答1 为什么最后一行没有得到正确的输出,而其他却没有? 当您print foo ,打印出来的是str(foo) 。 但是,如果foo是一个list ,则str(foo) repr(bar)对每个元素bar使用repr(bar) ,而不是str(bar) 。 字符串的str是字符串本身。 字符串的repr是引号内的字符串,并转义了。 我该如何纠正错误的 如果要打印list中每个元素的str ,则必须显式地执行此操作。 例如: print '[' + ', '.join(["asdf", "中文"]) + ']' 已经有零星的提议来更改此行为,因此str序列上的str调用其成员上的str 。 PEP 3140被拒绝。 2009年的这篇文章解释了拒绝它的设计原理。 但主要是
  • 如何在sqlite控制台中正确显示汉字?(how to display chinese character properly in sqlite console?)
    问题 下面是utf-8格式的示例csv文件,可以在win7的记事本中打开,可以正常显示汉字,请下载。 http://pan.baidu.com/s/1sj0ia4H 打开你的cmd,设置chcp 650001。 C:\Users\pengsir>sqlite3 e:\\test.db SQLite version 3.8.4.3 2014-04-03 16:53:12 Enter ".help" for usage hints. sqlite> create table ipo(name TEXT,method TEXT); sqlite> .separator "," sqlite> .import "e:\\tmp.csv" ipo sqlite> select * from ipo; 000001,公开招募 000002,申请表抽签é™é¢è®¤è´­ 000004,定å‘å‘è¡Œ 000005,银行储蓄存å•æ–¹å¼ 000006,申请表抽签é™é¢è®¤è´­ 000007,自办å‘è¡Œ 000008,自办å‘è¡Œ 000009,定å‘å‘è¡Œ 000010,定å‘å‘è¡Œ 000011,申请表抽签等é¢è®¤è´­ sqlite>
  • 如果我打开 xml 文件,Emacs 会显示中文字符(Emacs displays chinese character if I open xml file)
    问题 我有一个 xml 文件。 当我用 Emacs 打开它时,它显示中文字符(见附件)。 这发生在我装有 Emacs 和记事本的 Windows 7 PC 以及我的 Windows XP 上(见图 A)。 图 B 是 A 的十六进制模式。 如果我使用同事的Windows XP PC并用记事本打开文件,则没有汉字,而是一个奇怪的字符。 我将它保存为 txt 文件并通过电子邮件发送到我的 Windows7-PC(见图 C)。 奇怪的字符被替换为“?”。 (由于限制,我无法使用我同事的PC并复制带有奇怪字符的记事本文件)。 我的问题:XML 文件中似乎有一些字符会产生问题。 我不知道如何应对。 有人知道我如何解决这个问题吗? 跟编码有关系吗? 谢谢你的提示。 回答1 通过图 B,看起来这个文件是用大端和小端 UTF-16 混合编码的。 它以fe ff开头,这是 big-endian UTF-16 的字节顺序标记,并且 XML 声明( <?xml version=... )也是 big-endian,但以<report开头的部分是 little-端序。 您可以判断,因为字母出现在十六进制显示的第一部分的偶数位置,但出现在更远的奇数位置。 此外,在<report之前有一个空字符(编码为两个字节, 00 00 )。 XML 文档中不允许使用空字符。 但是,由于某些 XML 元素在图 A
  • 如何在 Android 上使用 Google 的文字转语音服务进行汉字转换?(How to use Google's Text-to-Speech service for Chinese characters on Android?)
    问题 我正在尝试从 google 的文本转语音功能中提取音频文件。 基本上,您将链接放入,然后在链接的末尾连接您想说的任何内容。 我已经让下面的代码对英语工作得很好,所以我认为问题一定是中文字符是如何在请求中编码的。 这是我所拥有的: String text = "text to be spoken"; public static final String AUDIO_CHINESE= "http://www.translate.google.com/translate_tts?tl=zh&q="; public static final String AUDIO_ENGLISH = "http://www.translate.google.com/translate_tts?tl=en&q="; URL url = new URL(AUDIO_ENGLISH + text); urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setRequestProperty("Accept-Charset", Variables.UTF_8); if (urlConnection.getResponseCode() =
  • Unicode字符在Java JSON解析中显示为问号(Unicode Characters appearing as Question Marks in Java JSON Parsing)
    问题 过去几天,我一直在搜索有关此内容的信息,但我认为我找不到正确的指针。 如果发现重复,请与适当的问题合并。 我是使用JSON的新手,作为我的项目之一,我需要解码JSON文件并对其进行进一步处理。 但是,当我尝试使用Json-simple库解码时,在解析的对象中出现了一些奇怪的问号,而不是实际的字符。 示例代码如下所示: String str = "{\"alias\": [\"Evr\u00f3pa\", \"\u05d0\u05d9\u05e8\u05d5\u05e4\"]}"; JSONParser parser = new JSONParser(); JSONObject jsonObject = (JSONObject)parser.parse(str); System.out.println(jsonObject) gives {"alias":["Evrópa","?????"]} 我也尝试过使用Json-lib来获得相同的结果。 谢谢您的帮助。 回答1 问题不在于您的JSON,而是您的System.out.println()。 这些字符无法用您的终端(或您的IDE,如果您在其中运行它)的字符编码或环境中System.out使用的编码来表示。 文件不能包含Unicode字符。 文件是字节流,但是Unicode字符是多个字节(通常是两个)。 这是字符编码变得重要的地方
  • 在Java中检测中文字符(Detect Chinese character in java)
    问题 使用Java如何检测字符串是否包含汉字? String chineseStr = "已下架" ; if (isChineseString(chineseStr)) { System.out.println("The string contains Chinese characters"); }else{ System.out.println("The string contains Chinese characters"); } 您能帮我解决问题吗? 回答1 现在, Character.isIdeographic(int codepoint)会告诉您该代码点是否为CJKV(中文,日文,韩文和越南文)表意文字。 最近使用的是Character.UnicodeScript.HAN。 所以: System.out.println(containsHanScript("xxx已下架xxx")); public static boolean containsHanScript(String s) { for (int i = 0; i < s.length(); ) { int codepoint = s.codePointAt(i); i += Character.charCount(codepoint); if (Character.UnicodeScript.of
  • java语言中如何获取字符串中汉字的个数
    【实例描述】字符串中可以包含数字,字母、汉字或者其他字符。使用Character 类的isDigit()方法可以判断字符中的某个字符是否为数字,使用Character 类的isLetter()方法可以判断字符中的某个字符是否为字母。实例中将介绍一种方法用来判断字符串中的某个字符是否为汉字,通过此方法可以计算字符串中汉字的数量。实例的运行效果如图4.24 所示。【实现过程】在Eclipse 中新建项目ChineseCharacter,并在其中创建一个ChineseCharacter.java 文件。在该类的主方法中创建标准输入流的扫描器对象,接收用户输入的字符串。我们在程序中使用matches()方法来统计该字符串中汉字的个数。核心代码如下所示:protected void do_button_actionPerformed(ActionEvent e) { String text = chineseArea.getText(); // 获取用户输入 int amount = 0; // 创建汉字数量计数器 for (int i = 0; i < text.length(); i++) { // 遍历字符串每一个字符 // 使用正则表达式判断字符是否属于汉字编码 boolean matches = Pattern.matches("^[\u4E00-\u9FA5]{0,}$", ""
  • 在R中显示UTF-8编码的汉字(Displaying UTF-8 encoded Chinese characters in R)
    问题 我尝试打开一个UTF-8编码的.csv文件,该文件在R中包含(繁体)汉字。由于某种原因,R有时将信息显示为汉字,有时将其显示为Unicode字符。 例如: data <-read.csv("mydata.csv", encoding="UTF-8") data 将产生unicode字符,而: data <-read.csv("mydata.csv", encoding="UTF-8") data[,1] 实际上会显示汉字。 如果我将其转换为矩阵,它也会显示汉字,但是如果我尝试查看数据(命令View(data)或fix(data)),它将再次使用unicode。 我已经从使用Mac的人(我正在使用PC,Windows 7)上寻求建议,其中有些人整个都带有中文字符,而其他人则没有。 我试图将原始数据另存为表,并以这种方式将其读入R中-结果相同。 我尝试在RStudio,Revolution R和RGui中运行脚本。 我试图调整语言环境(例如中文),但是R不允许我更改它,否则结果是乱码而不是Unicode字符。 我当前的语言环境是: “ LC_COLLATE =法语_瑞士.1252; LC_CTYPE =法语_瑞士.1252; LC_MONETARY =法语_瑞士.1252; LC_NUMERIC = C; LC_TIME =法语_瑞士.1252”
  • IText - 用汉字生成PDF(简体中文)(IText - Generating PDF with Chinese characters (Chinese Simplified))
    问题 我正在使用 iText 生成一些 PDF,这些 pdf 有一些中文字符(简体中文 - GB2312),但是我无法生成带有这些字符的 pdf。 谁能告诉我我错在哪里? 我尝试使用各种形式的创作但没有成功: BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); com.itextpdf.text.DocumentException: Font 'STSong-Light' with 'UniGB-UCS2-H' is not recognized. at com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:699) at com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:606) at com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:441) at com.ford.fc.frc.render.wsltopdf.PDFDefaultWriter.printText(PDFDefaultWriter.java:176) at com.ford.fc.frc.render
  • 为什么Java BufferedReader()无法正确读取阿拉伯和中文字符?(Why is Java BufferedReader() not reading Arabic and Chinese characters correctly?)
    问题 我正在尝试读取每行包含英语和阿拉伯字符的文件,以及每行包含英语和汉语字符的另一个文件。 但是,阿拉伯语和中文字符无法正确显示-它们只是显示为问号。 知道如何解决这个问题吗? 这是我用来阅读的代码: try { String sCurrentLine; BufferedReader br = new BufferedReader(new FileReader(directionOfTargetFile)); int counter = 0; while ((sCurrentLine = br.readLine()) != null) { String lineFixedHolder = converter.fixParsedParagraph(sCurrentLine); System.out.println("The line number "+ counter + " contain : " + sCurrentLine); counter++; } } 版本01 阅读该行并获取阿拉伯语和中文单词后,我使用一个函数来翻译它们,只需在ArrayList中搜索给定的阿拉伯文字(包含所有预期的单词)(使用indexOf();方法)。 然后,当找到单词的索引时,它会被用来调用另一个Arraylist中具有相同索引的英语单词。 但是,此搜索始终返回false
  • Java 控制台无法正确读取中文字符(Java console not reading in Chinese characters correctly)
    问题 我正在努力让 Eclipse 正确读取中文字符,而且我不确定我哪里出错了。 具体来说,在从控制台读取一串中文(简体或繁体)和输出之间的某个地方,它会出现乱码。 即使输出一大串混合文本(英文/中文字符),它似乎也只是改变了中文字符的外观。 我已将其缩减为以下测试示例,并明确地用我认为在每个阶段发生的情况对其进行了注释 - 请注意,我是一名学生,非常想确认我的理解(或其他方式):) public static void main(String[] args) { try { boolean isRunning = true; //Raw flow of input data from the console InputStream inputStream = System.in; //Allows you to read the stream, using either the default character encoding, else the specified encoding; InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8"); //Adds functionality for converting the stream being read in