服务器维护系列——Matlab代码从Windows拷贝到Linux变成乱码

博客新址: http://blog.xuezhisd.top
邮箱:xuezhisd@126.com


环境

  • Ubuntu 14.04
  • Matlab 2014b

问题

  • 将matlab代码从Windows中复制到Linux中(或从Linux复制到Windows)时,matlab代码中的中文注释部分变成了乱码。

原因

  • Windows和Linux中的默认编码不同,Windows中默认为GB2312,Linux中默认为UTF-8。
  • Matlab会自动使用操作系统的默认编码。
  • 由于编码方式不同,所以出现了乱码现象。

解决方法

单文件处理

  • 使用Linux命令iconv转换编码方式。
  • 例如,将test1.m从Windows复制到Linux中,使用以下命令可以转换编码方式,解决乱码问题。
# 将test1.m转换成UTF-8
iconv -f GB2312 -t UTF-8 test1.m -o test1.m
  • 假设将test2.m从Linux复制到Windows中,使用以下命令可以转换编码方式,解决乱码问题。
# 将test2.m转换成GB2312
iconv -f UTF-8 -t GB2312 test2.m -o test2.m

批量处理

  • 如果是少量的文件,可以使用iconv逐个转换,但是如果文件数量很多,就很麻烦。
  • 为了提高效率,可以使用使用shell脚本批量转换编码。点此下载脚本
  • 脚本内容如下所示:
#!/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. ========"

  • 使用方法:
    • 将该脚本放到需要进行转换的matlab代码所在的文件夹中,执行该脚本,可以将当前目录及其子目录中的*.m文件转换成指定编码格式。
    • 给脚本添加可执行权限。chmod +x convertMatlab.sh
    • 从Linxu复制到Windows中,执行命令./convertMatlab.sh win
    • 从Windows复制到Linux中,执行命令./convertMatlab.sh linux
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值