Linux下修改默認字符集--->解決Linux下Java程序種中文文件夾file.isDirectory()判斷失敗的問題


一、問題描述:

  一個項目中為了生成樹狀目錄,調用了file.listFiles()方法,然后利用file.isDirectory()方法判斷是否為目錄,該程序在windows下運行無問題,在Linux下中文文件夾用該方法判斷會失敗,具體表現為:isFile()---false; isDirectory()---false;

  查閱資料,很多網帖說是Linux下無法使用isDirectory()進行判斷,但是沒有解決方案。

  另一方面,程序中顯示的文件名為亂碼。所以考慮是不是Linux系統的編碼問題導致無法正確讀取。也有人說java的默認字符集是zh_CN.GB3212,而Linux的默認字符集是zh_CN.UTF-8,查看了一下/etc/sysconfig/i18n,果然是。

  於是修改了Linux的默認字符集,上述問題得以解決,中文文件夾isDirectory()判斷無問題,文件名亂碼也得以解決。

二、解決方案:

修改Linux下的默認字符集步驟:

vi /etc/profile
export LC_ALL="zh_CN.GB2312"
export LANG="zh_CN.GB2312"
 
vi /etc/sysconfig/i18n
#LANG="zh_CN.UTF-8"
#SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en"
#SYSFONT="latarcyrheb-sun16"
LANG="zh_CN.GB2312"
LANGUAGE="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"
 
#使上述修改生效 source /etc/profile source /etc/sysconfig/i18n

進行修改是要注意大小寫,由於我在寫的時候把zh_CN.GB2312寫成了zh_CN.GB3212,出現以下錯誤:

-bash: warning: setlocale: LC_CTYPE: cannot change locale (zh_CN.GB3212): No such file or directory  
-bash: warning: setlocale: LC_COLLATE: cannot change locale (zh_CN.GB3212): No such file or directory  
-bash: warning: setlocale: LC_MESSAGES: cannot change locale (zh_CN.GB3212): No such file or directory  
-bash: warning: setlocale: LC_NUMERIC: cannot change locale (zh_CN.GB3212): No such file or directory  
-bash: warning: setlocale: LC_TIME: cannot change locale (zh_CN.GB3212): No such file or directory 

修改完畢后,重啟tomcat,問題解決。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM