【问题标题】:while parsing YML to POJO getting exception Invalid UTF-8 start byte 0x80 (at char #158, byte #-1)在将 YML 解析为 POJO 时出现异常 Invalid UTF-8 start byte 0x80 (at char #158, byte #-1)
【发布时间】:2020-07-09 06:02:20
【问题描述】:

我正在尝试将 yml 文件解析为 java 对象,同时使用对象映射器解析 yml 文件低于异常。

线程“main”中的异常 com.fasterxml.jackson.dataformat.yaml.JacksonYAMLParseException: java.io.CharConversionException:无效的 UTF-8 起始字节 0x80(在 char #158, byte #-1) at [Source: (File);行:1,列:1] 在 com.fasterxml.jackson.dataformat.yaml.YAMLParser.nextToken(YAMLParser.java:361) 在 com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4620) 在 com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4469) 在 com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3299)

我的java代码

ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory());
XmlConverterProp prop = objectMapper.readValue(configFile, XmlConverterProp.class);

yml 文件

dateFormat: "MM/dd/yyyy=Billing_Date"
lineItemRowNodeName: row
lineItemsNodeName: Mode_Items
removeValueChars: "Net_Amount=$,Unit_Price=Rs.,Item_Amount=€,Gross_Amount=$"
requiredHeaderTags: "cc_BatchDetails,Invoice_Number,Invoice_Date,PO_Number,Document_Type,Vendor_Name,Tax_Amount,Net_Amount,Invoice_Amount,Currency,Gross_Amount,cc_ProfileName,Remit_To_Address_1"
requiredLineTags: "Item_Code,Item_Description,Quantity,Unit_Price,Item_Amount"

【问题讨论】:

  • Hex 80 可能是欧元符号。这就是在某些非 utf8 编码中的含义。

标签: java utf-8 yaml snakeyaml jackson-dataformat-yaml


【解决方案1】:

有问题的字符是欧元符号。您的输入未编码为 UTF-8,因为欧元符号编码为 0x80。这对应于IEC_8859-15(Latin-9)或Windows-1252

YAML 要求输入是 UTF 编码(8、16 或 32)之一,最常见的是 UTF-8。您需要以 UTF-8 或其他格式之一对 YAML 文件进行编码,以便正确加载。所有代码编辑器都提供了执行此操作的方法,大多数都在底部状态栏中提供了选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-15
    • 2018-01-26
    • 2022-09-26
    • 2021-11-24
    • 2020-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多