Windows Eclipse下潜在的文件编码问题

本文探讨了在Windows环境下使用Eclipse开发Java程序时遇到的文件编码问题,特别是在Web开发中,通过对比命令行和Eclipse环境下的文件编码,提出了两种解决方案。

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

如果你和我一样,在Windows下用Eclipse开发Java程序,尤其是Web程序,为了防止乱码问题,都习惯于将默认的文件编码设置为“UTF-8”。
BTW,设置默认文件编码的方法:

Java代码文件和其他文本文件:Windows->Preferences->General->Wordspace->Text file encoding
[img]http://lveyo.iteye.com/upload/picture/pic/86610/def15f20-2a4e-315d-bbc3-e59176e58f67.png[/img]

css,jsp,html文件:Windows->Preferences->Web->CSS Files/HTML Files/JSP Files
[img]http://lveyo.iteye.com/upload/picture/pic/86608/886f9535-3079-38e7-80c0-1a3a2a2d873b.png[/img]

经过以上的设置之后,在Eclipse下新建文件都默认采用UTF-8编码,但是问题出现了,用下面这段java代码测试一下Windows系统的默认文件编码和在Eclipse中默认的文件编码分别是什么。
package com.lveyo.java.lite.system;

import java.util.Properties;

public class SystemProperties {
public static void main(String[] args) {
Properties props = System.getProperties();
System.out.println("Java Version: " + props.getProperty("java.version"));
System.out.println("Java Vendor: " + props.getProperty("java.vendor"));
System.out.println("JVM Version: " + props.getProperty("java.vm.version"));
System.out.println("Java Specification Version: " + props.getProperty("java.specification.version"));
System.out.println("OS name: " + props.getProperty("os.name"));
System.out.println("OS architecture: " + props.getProperty("os.arch"));
System.out.println("OS Version: " + props.getProperty("os.version"));
System.out.println("File Encoding: " + props.getProperty("file.encoding"));
System.out.println("User Language: " + props.getProperty("user.language"));
}
}


在Eclipse下直接运行这段程序,结果为:

Java Version: 1.6.0_24
Java Vendor: Sun Microsystems Inc.
JVM Version: 19.1-b02
Java Specification Version: 1.6
OS name: Windows 7
OS architecture: x86
OS Version: 6.1
File Encoding: UTF-8
User Language: zh


直接将此段程序在Windows命令行下执行,结果为:
D:\LiteJava\bin>java com.lveyo.java.lite.system.SystemProperties
Java Version: 1.6.0_21
Java Vendor: Sun Microsystems Inc.
JVM Version: 17.0-b16
Java Specification Version: 1.6
OS name: Windows 7
OS architecture: x86
OS Version: 6.1
File Encoding: GBK
User Language: zh


我几乎测试了所有中文版的Windows操作系统,默认编码都是GBK。

问题的产生:
运行的结果发现,程序在命令行下运行文件编码变为GBK,也就是说如果开发的程序部署到Windows主机的服务器下,那么默认的文件编码是GBK的,虽然页面JSP文件也是用UTF-8显示,系统自身不会产生乱码问题,但是若开发与其它系统对接的程序,如网上支付等,需要传中文到其他系统的时候就会出现开发环境和生成环境文件编码不同产生的乱码问题。

解决方案:

[list=1]
[*]将开发和生产环境都迁移到Linux下,全部采用UTF-8编码。各个系统之间也统一采用UTF-8编码,各种语言各种文字都不会产生乱码,这也是比较彻底的解决方案。
[*]在Windows下运行,可以在命令行加参数“-Dfile.encoding=UTF-8”,来修改默认的文件编码。
[/list]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值