2021-05-12 14:32:11
Matlab程式碼從Windows拷貝到Linux變成亂碼
2020-06-16 17:27:36
環境
- 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
------------------------------------------分割線------------------------------------------
本文永久更新連結地址:http://www.linuxidc.com/Linux/2016-11/137495.htm
相關文章