前言
当我们在windows新建一个文件,里面有中文时,使用Xftp上传到linux服务器上,会出现乱码问题。
- Windows的默认编码为GBK
- Linux的默认编码为UTF-8
Xftp上传文件乱码
现在 windows 电脑上新建一个txt文件,命名为"中文.txt", 并且写入中文内容:上海-悠悠。
使用 xhsell 的 xftp 工具上传到linux服务器上
首先在xftp上传页面,并没有出现乱码问题
在linux上查看时,却出现乱码了
[root@yoyo docker-run]# ll -rw-r--r-- 1 root root 422 Aug 23 00:15 test_h.py -rw-r--r-- 1 root root 9 Oct 13 10:11 ????.txt -rw-r--r-- 1 root root 10 Oct 13 09:55 yoyo.txt
出现这个问题主要原因是因为Windows上默认的GBK编码,Linux默认的是UTF-8,另外Xftp传输工具的编码也得设置下
Xftp 设置编码
打开 Xftp 工具,设置属性-编码格式-勾选 UTF-8 格式
再重新上传文件,查看
[root@yoyo docker-run]# ll -rw-r--r-- 1 root root 9 Oct 13 10:21 中文.txt [root@yoyo docker-run]# cat 中文.txt ???-??[root@yoyo docker-run]#
这时候虽然文件名能显示中文了,但是里面的内容还是乱码。解决办法,把windows的源文件编辑的内容设置UTF-8格式
源文件编码UT-8
因为windows系统上的txt文件,左上角选择文件-另存为,会发现文件默认ANSI编码
解决办法1:可以在另存为的时候,修改编码格式为UTF-8,保存。
解决办法2:可以使用一些编辑器写文件内容,比如pycharm等。
修改好之后,重新上传过去,查看就可以正常的显示中文了
[root@yoyo docker-run]# ll -rw-r--r-- 1 root root 18 Oct 13 10:28 中文.txt [root@yoyo docker-run]# cat 中文.txt 上海-悠悠 [root@yoyo docker-run]#
Xshell编码设置
如果Xshell 终端页面在查看日志时候,中文显示乱码,需要改下Xshell的设置(一般默认就是UTF-8编码)。
打开Xshell终端-左上角文件-属性-终端-编码-勾选UTF-8
总结:保证三个地方编码(UFF-8)一致即可
- 源文件(xxx.txt)的编码
- 上传工具(Xftp)的编码
- 终端(Xshell)显示工具的编码