java.nio.charset.MalformedInputException: Input length = 1 异常

网上很容易查到是因为读取多字节字符造成的,而我的工程中读文件的操作在我使用的一个第三方 jar 中,为了统一也不便修改,这里简单记录一下我的解决方法:

一、开发工具

在虚拟机的启动参数中配置 -Dfileencoding=utf-8

java.nio.charset.MalformedInputException: Input length = 1 异常

至于配置后日志乱码的问题,可以在Tomcat中配置(实际操作请灵活变通):

Tomcat logging.properties 需要配置:
java.util.logging.ConsoleHandler.encoding=gbk

二、war 包部署

部署到 Tomcat 中时可以这样配置:

Tomcat catalina.bat 开头
set JAVA_OPTS="-Dfile.encoding=utf-8"

三、jar 包部署

使用 jar 部署时可以这样:

java -jar -Dfile.encoding=utf-8 -Dcatalina.home=D:\apache-tomcat-8.5.34 D:\IdeaWorkSpace\xxx\target\xxx.jar