`
lveyo
  • 浏览: 910546 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

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

Java代码文件和其他文本文件:Windows->Preferences->General->Wordspace->Text file encoding


css,jsp,html文件:Windows->Preferences->Web->CSS Files/HTML Files/JSP Files


经过以上的设置之后,在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显示,系统自身不会产生乱码问题,但是若开发与其它系统对接的程序,如网上支付等,需要传中文到其他系统的时候就会出现开发环境和生成环境文件编码不同产生的乱码问题。

解决方案:

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

1
0
分享到:
评论
1 楼 魂魄魔君 2011-10-21  
  

相关推荐

    JAVA上百实例源码以及开源项目

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    JAVA上百实例源码以及开源项目源代码

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    java开源包1

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包11

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包2

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包3

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包6

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包5

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包10

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包4

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包8

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包7

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包9

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包101

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    Java资源包01

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

Global site tag (gtag.js) - Google Analytics