Получить исключение Недопустимый начальный байт UTF-8 0x80 (в char # 158, байт # -1) при синтаксическом анализе YML - PullRequest
0 голосов
/ 09 июля 2020
• 1000 dataformat.yaml.JacksonYAMLParseException: java .io.CharConversionException: недопустимый начальный байт UTF-8 0x80 (в char # 158, байт # -1) в [Источник: (Файл); строка: 1, столбец: 1] на com.faster xml .jackson.dataformat.yaml.YAMLParser.nextToken (YAMLParser. java: 361) на com.faster xml .jackson.databind.ObjectMapper._initForReading ( ObjectMapper. java: 4620) при com.faster xml .jackson.databind.ObjectMapper._readMapAndClose (ObjectMapper. java: 4469) при com.faster xml .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"

1 Ответ

1 голос
/ 09 июля 2020

Символ проблемы c - это знак евро. Ваш ввод не кодируется как UTF-8, поскольку знак евро кодируется как 0x80. Это соответствует IEC_8859-15 (Latin-9) или Windows -1252 .

YAML требует, чтобы входные данные были одной из кодировок UTF (8 , 16 или 32), наиболее распространенным из которых является UTF-8. Вам нужно закодировать ваш YAML-файл в UTF-8 или в одном из других, чтобы он правильно загрузился. Все редакторы кода предоставляют способ сделать это, у большинства есть опция в нижней строке состояния.

...