linux 编码错误,错误的文件编码在JVM的Linux更新

后更新Linux和Java(1.6.0.13-> 1.6.0.45)之后,Java进程使用不同的文件编码(系统属性的file.encoding)错误的文件编码在JVM的Linux更新

新的操作系统版本。不幸的是,我不知道以前的版本了。但我可以告诉,更新出错了。我的Collegue首先使用x32操作系统版本进行了更新,然后我们重新安装了x64版本。

>uname -a

Linux 2.6.31.5-0.1-desktop #1 SMP PREEMPT 2009-10-26 15:49:03 +0100 x86_64 x86_64 x86_64 GNU/Linux

区域设置

>locale

LANG=en_US.ISO8859-1

LC_CTYPE=en_US.ISO8859-1

LC_NUMERIC="en_US.ISO8859-1"

LC_TIME="en_US.ISO8859-1"

LC_COLLATE="en_US.ISO8859-1"

LC_MONETARY="en_US.ISO8859-1"

LC_MESSAGES="en_US.ISO8859-1"

LC_PAPER="en_US.ISO8859-1"

LC_NAME="en_US.ISO8859-1"

LC_ADDRESS="en_US.ISO8859-1"

LC_TELEPHONE="en_US.ISO8859-1"

LC_MEASUREMENT="en_US.ISO8859-1"

LC_IDENTIFICATION="en_US.ISO8859-1"

LC_ALL=

测试程序

public class Test

{

public static void main(String[] args)

{

System.out.println(System.getProperty("file.encoding"));

}

}

如果我开始返回ANSI_X3.4-1968这个测试程序。在具有相同区域设置的其他机器上,它将返回ISO8859-1。即使我从显式环境变量开始,它仍然保持不变。唯一的工作解决方案是使用-Dfile.encoding选项。但我不想调整所有使用java的脚本(tomcat,maven,ant,hudson ....)。我想恢复旧的行为,即从Java系统区域设置定义中检索到Java程序中的文件编码。

>java Test

ANSI_X3.4-1968

>LANG=de_DE.ISO8859-1 java Test

ANSI_X3.4-1968

>java -Dfile.encoding=ISO8859-1 Test

ISO8859-1

至少C程序得到正确的编码和不使用ANSI_X3.4-1968

>idn --debug --quiet "a.de"

Charset `ISO-8859-1'.

....

有谁知道,如果有任何JVM的具体设置,可能OS或中迷路了java更新。

任何帮助表示赞赏。

2014-08-28

tejoe

+0

作为最后的手段,Java配置文件/环境变量('JAVA_OPTS')会自动读取并应用于每个JVM启动。如果您无法搜索并恢复原始编码,则可以通过这种方式为所有Java应用程序“永久”进行设置。 –

2014-08-28 12:37:51

+0

你能否对Java配置文件更具体些?我不知道。 JAVA_OPS似乎不起作用。 export JAVA_OPTS = -Dfile.encoding = ISO-8859-15 java测试 ANSI_X3.4-1968。这对于javac编译器设置无效,它也使用ANSI编码。 –

2014-08-28 14:06:16

+0

我不知道Linux中的配置文件位置,因为我使用Windows。对于'JAVA_OPTS',请参阅http://stackoverflow.com/questions/2011311/running-java-with-java-opts-env-variable –

2014-08-28 14:10:05

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值