在今天工作中做了一个文件上传下载功能,发现一个问题,在windows中测试通过的代码,在linux服务器上却找不到对应目录下的文件,经过查看日志发现是路径的分隔符导致的问题。
在windows中的分隔符是\ 比如 E:\\home\work 在String 中由于\属于转义字符需要再加上一个\ "E:\\home\\work"或者使用
@"E:\home\work" 可以无视掉转义字符。
在linux中的分隔符是/ 比如 /home/oracle url路径分隔符也是/ 如http://10.5.1.111/web/hello.jsp
为了保证可移植性,在java中使用File.separator来拼接,它会根据系统自动进行转化。
如:String url =File.separator+"home"+File.separator+"oracle";
在解决了分隔符问题后又产生了一个问题,根据文件名来查找目录底下查找不到,查看日志后发现文件名在linux中部分符号编程了乱码经查是Linux与Windows编码不一致导致
查看windows编码格式,打开cmd
chcp
找到对应的活动代码页
52936 简体中文(HZ)936 中国 - 简体中文(GB2312)950 繁体中文(Big5)65001 Unicode (UTF-8)1200 Unicode
查看linux正在使用的编码格式
locale
查看linux支持哪些编码格式
locale -a
修改linux编码格式(centos7)
vim /etc/locale.conf
修改为
LANG=zh_CN.gb2312
经查看:活动代码页为936,对应着locale -a查看出来的zh_CN.gb2312编码
重启生效
reboot