大家好,又见面了,我是你们的朋友全栈君。
window系统一般文件名编码为gbk,文件内容编码这个需要通过编辑器查看或者设置,找个editplus文本编辑器就可以处理文本内容编码。
那么在window上显示正常的文件到linux上的时候,常常会因为中文问题导致乱码,比如文件名乱码和文件内容乱码。
查看linux设置的编码:
[root ~]# echo $LANG zh_CN.UTF-8 [root ~]# locale LANG=zh_CN.UTF-8 LC_CTYPE=”zh_CN.UTF-8″ LC_NUMERIC=”zh_CN.UTF-8″ LC_TIME=”zh_CN.UTF-8″ LC_COLLATE=”zh_CN.UTF-8″ LC_MONETARY=”zh_CN.UTF-8″ LC_MESSAGES=”zh_CN.UTF-8″ LC_PAPER=”zh_CN.UTF-8″ LC_NAME=”zh_CN.UTF-8″ LC_ADDRESS=”zh_CN.UTF-8″ LC_TELEPHONE=”zh_CN.UTF-8″ LC_MEASUREMENT=”zh_CN.UTF-8″ LC_IDENTIFICATION=”zh_CN.UTF-8″
LC_ALL=
上门是基于centos6.5查询和设置,之前是设置USA.UTF-8,后面把它设置支持中文zh_CN.UTF-8,需要安装支持中文的包
yum -y groupinstall chinese-support
修改和设置编码
[root ~]# vim /etc/sysconfig/i18n LANG=”zh_CN.UTF-8″
[root ~]# source /etc/sysconfig/i18n
经过上面的设置后,开始基于xftp和xshell做下面的实验。
xshell在文件--》属性--》终端设置编码,xftp暂时不设置。
一、linux文件名乱码。
1、创建测试目录和测试文件,文件名带有中文字符,文件内容带有中文字符。通过xftp上传到linux服务器:
在xftp里面显示中文一切正常。
2、在linux下面显示发现文件名乱码。同时用file 文件名查看当前文件
此时做一个转码操作:
convmv –notest –nosmart -f gbk -t utf8 -r 文件或者目录
-f from从什么编码 -t to改成什么编码 –nosmart 如果已经是utf-8 忽略 -r 包含所有子目录
–notest 不加表示只列出有什么需要转换的,不做实际转换,所以一定要加
上面步骤已经搞定文件名乱码问题了,下面是通过设置xftp编码对应linux编码。
3、xftp文件--》属性--》选项,设置为utf-8编码--文件名传输编码。这样显示的文件名就直接是uft-8编码,linux显示就不会是乱码。
4、通过如上设置后,如果发现压缩包文件在服务器端解压后发现有乱码,那么先在window系统解压,然后整个目录传到服务器上,然后看看传上去的是否还是乱码,通过实践,发现中午可以正常的。
二、文件内容乱码。
1、用cat 查看发现内容乱码
2、iconv -f gbk -t utf8 test测试.txt -o test测试.txt
经过测试已经把文件乱码内容成功转码,
同时iconv不做覆盖的时候另外一种写法iconv -f gbk -t utf8 haha.txt > haha.txt.utf8
这种写法不能覆盖,原文件为空。
3、另外一种就是平时写的sell脚本,在window那边传过来需要转码。
安装:yum install -y dos2unix
执行相关命令dos2unix xxx.sh
上面两种解决方法基本上解决了window到linux文件名乱码和文件内容问题,后续遇到新的问题再追加进来。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/125203.html原文链接:https://javaforall.cn