Chinaunix首页 | 论坛 | 博客
  • 博客访问: 107596
  • 博文数量: 9
  • 博客积分: 1195
  • 博客等级: 少尉
  • 技术积分: 270
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-30 20:44
文章分类

全部博文(9)

文章存档

2011年(1)

2009年(5)

2008年(3)

我的朋友

分类: LINUX

2009-03-05 21:11:48

在系统为 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来设置程序运行的不同语言环境,localeANSI C提供支持。locale的命名规则为<语言>_<地区>.<字符集编码>,如zh_CN.UTF-8zh代表中文,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应用。。
进入应用系统查看功能目录文件。。哈哈。。那个高兴啊。。终于看到了亲切的中文文件名了。。。
今个高兴,把这个部分的内容记录下来以便算总结自己的经验教训。
阅读(4768) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~