歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Matlab代碼從Windows拷貝到Linux變成亂碼

Matlab代碼從Windows拷貝到Linux變成亂碼

日期:2017/2/28 13:46:44   编辑:Linux教程

環境

  • 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

腳本到Linux公社資源站下載:

------------------------------------------分割線------------------------------------------

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /2016年資料/11月/24日/Matlab代碼從Windows拷貝到Linux變成亂碼/

下載方法見 http://www.linuxidc.com/Linux/2013-07/87684.htm

------------------------------------------分割線------------------------------------------

Copyright © Linux教程網 All Rights Reserved