在系统为 Red Hat Enterprise Linux AS release 4 (Nahant Update 4)的环境下安装了WEBLOGIC9的应用服务器,部署了相关应用。其中应用中用到获取LINUX系统下目录文件的功能。
当通过JAVA的类FILE来处理时候发现对中文文件名或目录名获取得到的是???的名称。
如:
File[] dirfiles=dir.listFiles();目录dir下有1个文件为 测试.XLS
dirfiles.length得到的文件1个数,正确,但File file=dirfiles[0]; file.getName()得到的确为??.XLS的名了。。
经过痛苦的摸索。开始以为是JAVA的编码转换问题。结果试过很多编码转换都无效。如:new String(file.getName().getBytes("ISO8859-1"),“GBK”);
最后经过测试,发现在用SecureCRT终端连接主机,用ls命令查看文件也是??.XLS的显示。。所以确认应该是系统的编码设置问题。测试用#convmv方式转也不成功。
最后无意GOOGLE上看到一篇文章写到:在Linux中通过locale来设置程序运行的不同语言环境,locale由ANSI C提供支持。locale的命名规则为<语言>_<地区>.<字符集编码>,如zh_CN.UTF-8,zh代表中文,CN代表大陆地区,UTF-8表示字符集。在locale环境中,有一组变量,代表国际化环境中的不同设置。 LC_ALL
它是一个宏,如果该值设置了,则该值会覆盖所有LC_*的设置值。注意,LANG的值不受该宏影响。"C"是系统默认的locale,"POSIX"是"C"的别名。所以当我们新安装完一个系统时,默认的locale就是C或POSIX。
根据前面测试的经验知道在/etc/sysconfig/i18n文件中修改LANG的设置为:
LANG="zh_CN.GBK"
LANGUAGE="zh_CN.GBK:zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="lat0-sun16"
然后在/etc/profile文件中增加export LC_ALL=zh_CN.GBK内容。使得全部的LC*都统一了。
这样再重启主机。。
再进终端终于ls到了中文的文件名了。。
希望。。。启动WEBLOGIC应用。。
进入应用系统查看功能目录文件。。哈哈。。那个高兴啊。。终于看到了亲切的中文文件名了。。。
今个高兴,把这个部分的内容记录下来以便算总结自己的经验教训。
阅读(4781) | 评论(0) | 转发(0) |