免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1037 | 回复: 0
打印 上一主题 下一主题

关于LINUX中文文件名显示为?的解决办法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-05 21:11 |只看该作者 |倒序浏览
在系统为 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应用。。
进入应用系统查看功能目录文件。。哈哈。。那个高兴啊。。终于看到了亲切的中文文件名了。。。
今个高兴,把这个部分的内容记录下来以便算总结自己的经验教训。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/4985/showart_1852902.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP