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

2017-02-14  by:CAE仿真在線  來源:互聯(lián)網(wǎng)

Matlab代碼從Windows拷貝到Linux變成亂碼
環(huán)境 Ubuntu 14.04 Matlab 2014b
問題
將matlab代碼從Windows中復(fù)制到Linux中(或從Linux復(fù)制到Windows)時(shí),matlab代碼中的中文注釋部分變成了亂碼。
原因
Windows和Linux中的默認(rèn)編碼不同,Windows中默認(rèn)為GB2312,Linux中默認(rèn)為UTF-8。
Matlab會(huì)自動(dòng)使用操作系統(tǒng)的默認(rèn)編碼。
由于編碼方式不同,所以出現(xiàn)了亂碼現(xiàn)象。
解決方法
單文件處理

使用Linux命令iconv轉(zhuǎn)換編碼方式。
例如,將test1.m從Windows復(fù)制到Linux中,使用以下命令可以轉(zhuǎn)換編碼方式,解決亂碼問題。

# 將test1.m轉(zhuǎn)換成UTF-8 iconv -f GB2312 -t UTF-8 test1.m -o test1.m

假設(shè)將test2.m從Linux復(fù)制到Windows中,使用以下命令可以轉(zhuǎn)換編碼方式,解決亂碼問題。

# 將test2.m轉(zhuǎn)換成GB2312 iconv -f UTF-8 -t GB2312 test2.m -o test2.m
批量處理

如果是少量的文件,可以使用iconv逐個(gè)轉(zhuǎn)換,但是如果文件數(shù)量很多,就很麻煩。
為了提高效率,可以使用使用shell腳本批量轉(zhuǎn)換編碼。
腳本內(nèi)容如下所示:

#!/bin/bash # 功能:將GB2312文件 轉(zhuǎn)換成 UTF-8【解決Windows文件復(fù)制到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中移動(dòng)時(shí)出現(xiàn)的亂碼問題!" echo " 將該腳本復(fù)制到程序文件夾中,運(yùn)行該腳本,它會(huì)對(duì)當(dāng)前文件夾及子文件夾中的所有*.m文件進(jìn)行格式轉(zhuǎn)換,解決亂碼問題。" echo " 轉(zhuǎn)換到 Linux 的命令: $0 linux" echo " 轉(zhuǎn)換到 Window的命令: $0 win" exit fi echo "********************************" echo " 格式轉(zhuǎn)換中......" echo " 從"$sys1"("$format1") 轉(zhuǎn)換到 "$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. ========"

使用方法:


將該腳本放到需要進(jìn)行轉(zhuǎn)換的matlab代碼所在的文件夾中,執(zhí)行該腳本,可以將當(dāng)前目錄及其子目錄中的*.m文件轉(zhuǎn)換成指定編碼格式。
給腳本添加可執(zhí)行權(quán)限。chmod x convertMatlab.sh
從Linxu復(fù)制到Windows中,執(zhí)行命令./convertMatlab.sh win。
從Windows復(fù)制到Linux中,執(zhí)行命令./convertMatlab.sh linux。



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


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


免費(fèi)下載地址在 linux.linuxidc.com/


用戶名與密碼都是


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


下載方法見 /Linux/2013-07/87684.htm


開放分享:優(yōu)質(zhì)有限元技術(shù)文章,助你自學(xué)成才

相關(guān)標(biāo)簽搜索:Matlab代碼從Windows拷貝到Linux變成亂碼 MatLab培訓(xùn) MatLab培訓(xùn)課程 MatLab在線視頻教程 MatLab技術(shù)學(xué)習(xí)教程 MatLab軟件教程 MatLab資料下載 MatLab代做 MatLab基礎(chǔ)知識(shí) Fluent、CFX流體分析 HFSS電磁分析 Ansys培訓(xùn) Abaqus培訓(xùn) 

編輯
在線報(bào)名:
  • 客服在線請(qǐng)直接聯(lián)系我們的客服,您也可以通過下面的方式進(jìn)行在線報(bào)名,我們會(huì)及時(shí)給您回復(fù)電話,謝謝!
驗(yàn)證碼

全國服務(wù)熱線

1358-032-9919

廣州公司:
廣州市環(huán)市中路306號(hào)金鷹大廈3800
電話:13580329919
          135-8032-9919
培訓(xùn)QQ咨詢:點(diǎn)擊咨詢 點(diǎn)擊咨詢
項(xiàng)目QQ咨詢:點(diǎn)擊咨詢
email:kf@1cae.com