博客專欄

        EEPW首頁 > 博客 > 解決Linux與Windows文件顯示亂碼的問題

        解決Linux與Windows文件顯示亂碼的問題

        發布人:電子禪石 時間:2020-01-04 來源:工程師 發布文章

        重點:如果windows 下和虛擬機共享文件,先將文件移到其他位置使用notepad++ 改變編碼模式為UTF-8,然后復制到共享目錄,然后用編輯器打開中文就不是亂碼了。

        問題:

        • 在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. ========"
        1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
        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++上修改一下格式里面的編碼方式中文注釋沒有亂碼了 

        1.jpg————————————————
        參考:http://forum.ubuntu.org.cn/viewtopic.php?f=21&t=133898
                 https://blog.csdn.net/awkwardgirl/article/details/24018427原文鏈接:https://blog.csdn.net/edward_zcl/article/details/80180979


        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞:

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 哈巴河县| 西和县| 双流县| 台江县| 方城县| 泽州县| 布拖县| 敦化市| 保亭| 富锦市| 兴义市| 房山区| 尼勒克县| 安新县| 贵德县| 鄂温| 屏东县| 油尖旺区| 集安市| 泊头市| 盐源县| 西平县| 成武县| 正镶白旗| 闻喜县| 甘泉县| 寻乌县| 乌拉特前旗| 繁峙县| 独山县| 泰和县| 和林格尔县| 桑日县| 宝清县| 和政县| 凤山市| 常州市| 临朐县| 鹿邑县| 隆回县| 万源市|