java - 使用 JAXB 解析器解析韩语字符串 작동불 时获取字符串 '???'

标签 java xml encoding utf-8 jaxb

我想阅读下面的 XML 内容,并且我正在使用 JAXB 解析器进行转换 XML 到对象。 XML 文档采用 UTF-8 格式,其中包含一些 utf-8 我没有通过我的对象但得到的字符??? 相反。

XML 文件数据:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <CallDetails>
            <APPOINTMENTDATE>29.11.2016</APPOINTMENTDATE>
            <APPOINTMENTTIME>29.11.2016 11:11:00</APPOINTMENTTIME>
            <ASCCODE>83000220</ASCCODE>
            <CALLDESC>작동불</CALLDESC>
            <CALLRECEIVEDBY>김정권</CALLRECEIVEDBY>
            <CALLRECEIVEDMODECODE></CALLRECEIVEDMODECODE>
            <CALLREGBYCAT></CALLREGBYCAT>
            <CALLREGBYCODE></CALLREGBYCODE>
            <CALLREGDATE>29.11.2016</CALLREGDATE>
            <CALLREGTIME>29.11.2016 09:11:00</CALLREGTIME>
            <CALLTYPECODE>SVC</CALLTYPECODE>
            <COVERAGETYPECODE>UW</COVERAGETYPECODE>
            <SPECIALREQUEST></SPECIALREQUEST>
        </CallDetails>

读取文件如下,

InputStream inputStream = null;
inputStream = new FileInputStream(path);
InputStreamReader reader = new InputStreamReader(inputStream,"UTF-8");
JAXBContext context = JAXBContext.newInstance(clazz);
Unmarshaller um = context.createUnmarshaller();
InputSource is = new InputSource(reader);
is.setEncoding("UTF-8");
return um.unmarshal(is);

并获取对象如下:

THIRDPARTYSERVICEORDERNO = serviceOrderListDTO.getServiceOrderList().get(0).getThirdPartyServiceOrderNo();
CALLDESC = ServiceOrderListDTO.getServiceOrderList().get(0).getCallDetailsList().getCallDesc();
System.out.println("THIRDPARTYSERVICEORDERNO : "+THIRDPARTYSERVICEORDERNO);
System.out.println("CALLDESC: "+CALLDESC);

运行此代码后,我得到如下输出,

THIRDPARTYSERVICEORDERNO : AJ16110004904;
CALLDESC: ???;

最佳答案

我已经对你的代码进行了测试。 它产生的结果是正确的,这意味着在 Debug模式下内存中的值显示正确。 当将这些符号打印到控制台时,您将看到 ???因为控制台窗口默认情况下无法显示这些符号。 您必须确保:

  1. IDE 中项目的编码设置为 UTF-8
  2. 用于显示消息的字体与 UTF-8 兼容。 (看看http://unifoundry.com/unifont.html)
  3. 您应该使用 -Dfile.encoding=UFT-8 运行 jre

关于java - 使用 JAXB 解析器解析韩语字符串 작동불 时获取字符串 '???',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41281783/

相关文章:

encoding - 我们需要多少个字节来存储阿拉伯字符

php - 在 cakephp 中显示带有法语口音的数据

java - 在 main 方法中实例化内部类

java - 如何在 JodaTime 中创建几天的迭代器

java - 如何摆脱 java.lang.OutOfMemoryError : Java heap space

python - XML 走在 python 中

类似 Java Visual Studio 的菜单栏

java - 选项卡布局内的水平回收器 View

html - 在 ie9 和 ie10 中转换相同的 xsl 文件会产生不同的 html

java - Java如何确定 'file.encoding'系统属性?