java获取gbk文件名 linux_Java读取linux系统中文文件名时候乱码,并显示文件不存在...
使用ava.io.Filef=newjava.io.File("/home/multiverse/Repository/PMEPGImport")的方式讀取文件,如文件名稱含有中文,則讀取結果文件名稱中文部分亂碼,且顯示文件不存在。我試過設置...
使用ava.io.File f = new java.io.File("/home/multiverse/Repository/PMEPGImport")的方式讀取文件,如文件名稱含有中文,則讀取結果文件名稱中文部分亂碼,且顯示文件不存在。
我試過設置:
System.setProperty("file.encoding","GBK");
System.setProperty("sun.jnu.encoding","GBK");
不起作用;
試過將文件名稱進行如下轉碼:
String s0= new String(S.getBytes("UTF-8"),"GB2312");
String s1= new String(S.getBytes("GB2312"),"UTF-8");
String s2= new String(S.getBytes("ISO-8859-1"),"UTF-8");
String s3= new String(S.getBytes("UTF-8"),"ISO-8859-1");
String s4= new String(S.getBytes("ISO-8859-1"),"GB2312");
String s88= new String(S.getBytes("GBK"),"GB2312");
String s89= new String(S.getBytes("GB2312"),"GBK");
String s5= new String(S.getBytes("GB2312"),"ISO-8859-1");
String s6= new String(S.getBytes("GBK"),"UTF-8");
String s7= new String(S.getBytes("UTF-8"),"GBK");
String s8= new String(S.getBytes("GBK"),"ISO-8859-1");
String s9= new String(S.getBytes("ISO-8859-1"),"GBK");
都不起作用;
試過對tomcat的server.xml進行設置如下:
也不起作用;
還有試著將Linux的默認編碼格式為中文,修改/etc/sysconfig/i18n里的編碼格式,也是不起作用。
我上網問詢,研究了1個多星期,實在是找不出解決辦法,
今天部門老大提醒我從java代碼new java.io.File()過程,或者file.listFiles()的過程,深度刨析其源碼的方式尋找解決辦法,我還沒有做。
問題終于解決了,現在把方案共享一下:
解決此問題分兩步
第一步,保證文件存到Linux磁盤上,文件名的編碼格式是UTF-8。
使用“\\IP”方式訪問Linux服務器,并上傳文件是經過samba協議的,而samba協議默認的編碼格式是“GB2312”,所以每次我們通過“\\IP”方式向linux服務器放文件的時候,文件名存在磁盤上就已經亂碼了。所以要修改samba協議編碼格式。方法是:
修改/etc/samba/smb.conf 文件為以下內容:
dos charset = GB2312
unix charset = UTF-8
display charset = UTF-8
修改完后重起samba服務。
第二步,保證tomcat服務器的編碼格式是UTF-8。
通過在catalina.sh 啟動腳本里加入
export LANG=zh_CN.UTF-8
重啟tomcat就可以了。
展開
總結
以上是生活随笔為你收集整理的java获取gbk文件名 linux_Java读取linux系统中文文件名时候乱码,并显示文件不存在...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue用户行为收集_vue 实现移动端键
- 下一篇: element vue 纵向滑动条_【求