今天做项目的时候遇到一个很头疼的问题——无论在Java代码中如何统一编码为UTF8,在IDE中运行是完全没问题的,但打包成Jar通过Bash和CMD运行,都会出现中文乱码问题。起初是觉得Java编译时编码出现了问题,但经过几小时的排查,终于找到中文乱码问题的根源——cmd/bash默认的编码是GBK。为了防止日后再踩坑,本文记录问题的解决方案。
一、设定cmd的编码为utf-8
打开cmd,输入以下命令
chcp 65001
这样既可以更改cmd的编码为UTF-8了。
二、规定执行java时的编码方式
在cmd下,常见运行Jar包的命令如下
java -jar project.jar
但这样可能会使得java运行时编码不正确导致的报错,这时候我们可以将运行Jar时,指定编码参数
java -Dfile.encoding=utf-8 -jar project.jar
可以看到,项目正常启动,并且不会出现乱码问题;
通过以上步骤,基本上可以将中文乱码问题解决。
------------------------------------------------------------------------------------
二、windows 下java-jar启动的jar包怎么停
1 用管理员打开cmd命令窗口
2 输入:netstat -ano | findstr 端口号9233
3 根pid删除命令
taskkill /t /f /pid 2136
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2007-11-01 IIS不能用,报错:Failed to execute request because the App-Domain could not be created. Error: 0×80070005 Access is denied
2006-11-01 .NET自带控件 ································