问题:

  • 在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. ========"
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
关于vim中编码的细节问题,推荐另一篇文章,原文地址:http://edyfox.codecarver.org/html/vim_fileencodings_detection.html

Nodepad++:

在nodepad++上修改一下格式里面的编码方式中文注释没有乱码了

参考:http://forum.ubuntu.org.cn/viewtopic.php?f=21&t=133898
https://blog.csdn.net/awkwardgirl/article/details/24018427

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐