1. 方框型乱码
Q: 使用Jframe时,窗体上的组件的文本信息显示乱码,显示方框型的乱码;
分析:如果在Eclipse中使用debug的话,会发现数据完全正常,但是显示在JFrame上后就出现了方框型乱码,其本质并非乱码,而是使用的组件本身显示有问题,即问题出现在UI界面上,而不是业务逻辑上。所以需要更换高版本的组件或用其他组件代替;
例,自定义了一个MyButton组件的类,继承自java.awt.Button,在JFrame的实例中添加MyButton的实例后,如果MyButton的文本内容使用中文或日文或其他非英文时,就会出现显示方框型乱码。
A: 把MyButton所继承的java.awt.Button更换成javax.swing.JButton,问题得到解决。
2. 问号型乱码
问号型乱码是经常出现的乱码问题,除了Java文件本身的文件编码格式和文件内容不一致导致的乱码问题(若使用Eclipse,只需把整个项目的属性中的编码改为UTF8即可解决)和String的转码问题外,此处提出了一个罕见的真正乱码问题。
Q: 在开发工具(如Eclipse)中,如果同样使用Debug的话,会发现数据完全正常,不乱码。但是,作成jar包后,放到外环境(不在开发工具中),在外环境中运行时就出现了数据的乱码问题,多为问号"?"。
分析: 显然问题不是出现在工程内部,而是出现在JVM上,实际上,在使用命令运行程序的时候是需要很多参数的,所以是缺参数的问题。
A: 添加编码参数,如java -Dfile.encoding=utf-8 -jar directory\xxx.jar,或javaw -Dfile.encoding=utf-8 -jar directory\xxx.jar