当前位置: 首页 > 面试题库 >

Unicode字符在Java JSON解析中显示为问号

秦滨海
2023-03-14
问题内容

过去几天,我一直在搜索有关此内容的信息,但我认为我找不到正确的指针。如果发现重复,请与适当的问题合并。

我是使用JSON的新手,作为我的项目之一,我需要解码JSON文件并对其进行进一步处理。但是,当我尝试使用Json-
simple库解码时,在解析的html" target="_blank">对象中出现了一些奇怪的问号,而不是实际的字符。示例代码如下所示:

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,但结果相同。

谢谢您的帮助。


问题答案:

问题不在于您的JSON,而是您的System.out.println()。这些字符无法用您的终端(或您的IDE,如果在其中运行它)的字符编码或环境中System.out使用的编码来表示。

文件不能包含Unicode字符。文件是 字节 流,但是Unicode 字符
是多个字节(通常是两个)。这是字符编码变得重要的地方。必须将Unicode字符转换为字节序列,才能将它们写入文件(包括System.out)。UTF-8是Unicode字符最常用的编码之一。软件程序员的诀窍是在字节和字符之间进行转换时,始终使用正确的字符编码。如果在单个位置(例如,在debug
println()调用中)缺少正确的编码,则会产生错误和误导的输出。



 类似资料:
  • 问题内容: 我正在尝试使用System.out编写unicode字符(♠),并改为打印问号。 如何显示正确的unicode字符而不是问号? 我在Windows上使用IntelliJ IDEA,并尝试从IDE中进行打印。 问题答案: 文件编码配置是否正确?请参见“设置|文件编码”使用UTF-8。当我具有IDE编码并且所有文件都设置为UTF-8时,Printing♠对我有用。更改编码后可能需要重新编译

  • 所以这似乎是一个检索问题。代码如下: 受保护的字符串getStringValueNoNulls(ResultSet rs,String colName){ ...print语句的输出: ????(单位:DB) ??????9999(9999单位为DB) ??(单位:DB) 是我错过了什么,还是司机出了问题?请帮帮忙。 ----------------------------------------

  • 问题内容: 我只想在HTML页面中显示刻度(✔)和十字(✘)符号,但它显示为方框或粘稠度–显然与编码有关。 我已将meta标签设置为显示utf-8,但显然我缺少了一些东西。 编辑/解决方案: 通过使用FireBug所做的评论,我发现页面传递的标题实际上是“ Content-Type:text / html”,而不是UTF-8。使用Notepad ++查看文件格式时,显示我的文件格式为“没有BOM的

  • 我正在尝试使用raylib显示包含西里尔字符的字符串。所以我加载了一个代码点如下的字体: 如果我画

  • 我有一个输入表单,允许某人键入unicode字符。所以它可能是类似于“嘿,uF32A怎么了?如果我得到这个字符串,它将有一个子字符串“\uF32A”,我如何将其转换为字符“\uF32A”?