dom4j操作XML出现异常Invalid byte 1 of 1-byte UTF-8 sequence. Nested exception: Invalid byte 1 of

本文深入探讨了使用DOM4J处理XML文件时遇到的编码问题,特别是针对中文字符的支持不足。通过分析问题根源,提出了解决方案——在读取和写入XML文件时切换到GB2312编码模式,以确保中文字符的正确显示和处理。文章详细介绍了如何通过代码调整实现这一转换,为开发者提供了一种有效的方法来避免因编码不一致导致的数据丢失或显示错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在使用dom4j操作XML的时候突然碰到了异常,Error on line 1 of document : Invalid byte 1 of 1-byte UTF-8 sequence.确定肯定是编码的问题,二话不说,直接google,最终发现是utf-8编码对中文的支持问题。

    对中文的支持最好使用GB2312编码模式。读写XML前都应该设置编码模式。

     读取时:

      SAXReader reader = new SAXReader(); 

reader.setEncoding("GB2312");
doc=reader.read(new File(filePath));

     写入时:

   OutputFormat format = OutputFormat.createPrettyPrint();
 format.setEncoding("GB2312");
XMLWriter writer = new XMLWriter(new FileWriter(new File(filePath)),format);
 writer.write(doc);   
writer.close();

/usr/local/include/ceres/internal/integer_sequence_algorithm.h:135:59: note: expected a type, got ‘N’ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:146:39: error: ‘integer_sequence’ is not a member of ‘std’ 146 | struct ExclusiveScanImpl<T, Sum, std::integer_sequence<T>, SeqOut> { | ^~~~~~~~~~~~~~~~ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:146:39: error: ‘integer_sequence’ is not a member of ‘std’ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:146:57: error: wrong number of template arguments (3, should be 4) 146 | struct ExclusiveScanImpl<T, Sum, std::integer_sequence<T>, SeqOut> { | ^ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:130:8: note: provided for ‘template<class T, T Sum, class SeqIn, class SeqOut> struct ceres::internal::ExclusiveScanImpl’ 130 | struct ExclusiveScanImpl; | ^~~~~~~~~~~~~~~~~ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:160:53: error: ‘integer_sequence’ is not a member of ‘std’ 160 | typename ExclusiveScanImpl<T, T(0), Seq, std::integer_sequence<T>>::Type; | ^~~~~~~~~~~~~~~~ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:160:53: error: ‘integer_sequence’ is not a member of ‘std’ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:160:70: error: template argument 4 is invalid 160 | typename ExclusiveScanImpl<T, T(0), Seq, std::integer_sequence<T>>::Type; | ^ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:160:16: error: expected nested-name-specifier 160 | typename ExclusiveScanImpl<T, T(0), Seq, std::integer_sequence<T>>::Type; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /usr
最新发布
03-25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值