linux windows文件 编码_解决Linux与Windows文件显示乱码的问题

重点:如果windows 下和虚拟机共享文件,先将文件移到其他位置使用notepad++ 改变编码模式为UTF-8,然后复制到共享目录,然后用编辑器打开中文就不是乱码了。

问题:

在Windows下用matlab写的代码(.m)文件复制到Linux(Ubuntu)下,注释的中文全是乱码

反之,也是一样

原因:

Windows下默认使用的是GB2312编码,Linux默认使用的是UTF-8。 所以在Windows下产生的代码是GB2312编码,在Linux下当然识别为乱码 ; 反之,同理乱码 。

解决方法:

1、直接对文件编码格式的转码,需要不断使用命令

使用linux下的iconv 命令改变文件的编码:

test1.m由GB2312转换成UTF-8(windows下matlab的代码在linux下运行)

iconv  -f  GB2312  -t  UTF-8  test1.m  -o  test1.m

test2.m由UTF-8转换成GB2312(linux下matlab的代码在windows下运行)

iconv -f  UTF-8  -t  GB2312  test2.m  -o  test2.m

如果文件过多,要进行批处理,可用如下编写的shell脚本批量转换编码。(脚本来自linux公社,点击我立刻下载)

使用方法: 将该脚本放在需要进行转换的文件夹中, 执行脚本,可以将当前目录和其子目录下的所有文件转换成指定的编码方法 。

执行如下:

由GB2312转换成UTF-8

./convertMatlab.sh   win

由UTF-8转换成GB2312

./convertMatlab.sh  linux

提示: 普通用户没有执行权限,需要用chmod +x convertMatlab.sh 增加执行权限

附:Shell脚本(convertMatlab.sh)

#!/bin/bash

# 功能:将GB2312文件 转换成 UTF-8【解决Windows文件复制到Linux之后乱码问题】

#read -p "Input Path:" SPATH

SPATH="."

#echo $SPATH

POSTFIX="m"

param1="$1"

if [ "$param1" == "win" ];then

sys1="Linux"

sys2="Windows"

format1="UTF-8"

format2="GB2312"

elif [ "$param1" == "linux" ];then

sys1="Windows"

sys2="Linux"

format1="GB2312"

format2="UTF-8"

else

echo "************** 功能 ************"

echo "  解决matlab脚本文件在Windows和Linux中移动时出现的乱码问题!"

echo "  将该脚本复制到程序文件夹中,运行该脚本,它会对当前文件夹及子文件夹中的所有*.m文件进行格式转换,解决乱码问题。"

echo "  转换到 Linux 的命令: $0 linux"

echo "  转换到 Window的命令: $0 win"

exit

fi

echo "********************************"

echo "  格式转换中......"

echo "  从"$sys1"("$format1") 转换到 "$sys2"("$format2")"

echo "********************************"

FILELIST(){

filelist=`ls $SPATH `

for filename in $filelist; do

if [ -f $filename ];then

#echo File:$filename

#echo "${filename#*.}"

EXTENSION="${filename#*.}"

#echo $EXTENSION

if [ "$EXTENSION" == "$POSTFIX" ];then

#echo "${filename%%.*}"

echo Processing: $filename

iconv -f $format1 -t $format2 $filename -o $filename

#iconv -f GB2312 -t UTF-8 $filename -o $filename

fi

elif [ -d $filename ];then

cd $filename

SPATH=`pwd`

#echo $SPATH

FILELIST

cd ..

else

echo "$SPATH/$filename is not a common file."

fi

done

}

cd $SPATH

FILELIST

echo "======== Convert Done. ========"

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162

2、设置编辑器的编码方式,一步到位(但也取决于你的编辑器或者IDE)

VIM:

用editplus时,用“另存为…”保存文件时,可以手工选择编码类型:ANSI、Unicode、UTF-8等。在用VIM时如何设置文件的编码类型呢。在vim中,缺省情况下都会按ANSI方式保存,有时我们用vim编写一些jsp文件时,一不小心,就容易犯错误了,因为在我们的开发团队中,是统一使用utf-8编码的,如果用ansi方式保存了,在网页的显示时就会出现乱码问题。

所以如果不清楚自己的缺省编码设置,可以手工输入设置命令:

:set fileencoding=utf-8

然后再保存就行了:

:w

这样无论之前的编码是什么,都会转换成utf-8保存。

如果希望缺省保存方式就是utf-8,就需要在_vimrc中加入以下设置:

set encoding=utf-8

set fileencoding=utf-8

set fileencodings=ucs-bom,utf-8,chinese

把这三行放在_vimrc的最开始的位置比较好。

参考:http://www.wangchao.net.cn/bbsdetail_1631847.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值