linux下访问不到中文文件名的文件的解决办法

发表评论 阅读评论

在linux(UNIX)主机里,通常文件名为中文的文件将不能被访问到,或者出现一个文件名为乱码的文件,但是我们依然不能下载来使用.
当然修改过编码的是没有问题的.

问题原因

国内的windows系统通常都是GBK编码,linux系统通常都是Unicode.
从windows(文件名为GBK编码)传送文件到linux(文件名为Unicode编码)主机,linux主机将GBK编码的文件名当做Unicode处理了,这样就产生了乱码.
当我们通过url访问这个文件的时候,url是Unicode编码的,与GBK编码的文件名不匹配,所以就找不到文件了.

解决方法

  • 不使用中文文件名.(这个比较彻底,如果已经使用了中文文件名,请忽略)
  • 配置mod_encoding为GBK.(如果是普通linux空间是没有权限修改的,请忽略)
  • UrlEncode将文件名编码后访问并下载,修改文件名为英文再重新上传,再之后就用英文文件名访问吧.原中文名的文件依然存在,无法删除.

这里着重讲下第3种解决方法.

比如要访问www.domain.com/文件.txt

  1. 将url里的中文进行UrlEncode编码,变为(www.domain.com/%CE%C4%BC%FE.txt) .  这里有在线编码器
  2. 用编码后的url通过浏览器或者下载器下载.
  3. 修改文件名为字母文件名,并上传.
  4. 使用新文件名.

结后语

在linux主机上尽量不要用中文文件名.
建议web上的文件名都不要用中文的,因为不知道哪天会投奔linux的怀抱.

  1. | |

    正在找这些资料,原来是编码问题,谢谢

  1. 本文目前尚无任何 trackbacks 和 pingbacks.
回到顶部