linux做的FTP服务器(vsftpd),上传的中文文件,名字都会被自动改掉,部分汉字被改成符号?

linux做的FTP服务器(vsftpd),上传的中文文件,名字都会被自动改掉,部分汉字被改成符号?,第1张

跟中文输入法没关系。我的建议是服务端和客户端都用UTF-8格式最好

给你看看我一个FTP服务器的编码:

$ whoami

root

$ echo $LANG

en_US.UTF-8

#这个表明系统默认UTF-8

$ ps auxw | grep vsftpd|grep -v grep

root 32449 0.0 0.0 4288 1020 ?SSep14 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

#查询到我的vsftpd的进程号 32449

$ cd /proc/32449/

$ ls

attr coredump_filter exe limitsmem root statm wchan

auxv cwd fd loginuid mounts smaps status

cmdline environ io maps mountstats stat task

$ cat environ

TERM=vt100PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/binPWD=/LANG=en_US.UTF-8SHLVL=1_=/usr/sbin/vsftpd

$

#看到environ文件的内容,其中的UTF-8表示我的vsftpd也采用utf-8编码,en_us表示语系

我的客户端用的有filezilla和flashfxp,默认都设成了以utf-8传输

如果你要用中文语系,最好也检查一下/usr/share/locale下面,比如:

$ ls /usr/share/locale/ | grep -i cn

zh_CN

zh_CN.GB2312

Windows 系统自带和第三方软件使用的编码不同就会导致这样。vsftp 不支持编码识别自动转换。所以两个客户端软件用的不同编码就会让 vsftp 的编码混乱。一般来说 Linux 现在都用 utf-8 一些新版本的 ftp 软件默认也会去转换为 utf-8 进行传输文件名,但 Windows 似乎旧版本还是用本地编码进行 IO。也就是简体中文用 GB 系列,繁体中文用 BIG ,英文用 ASCII 什么的互相不同的编码。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/tougao/7885206.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存