Mac 中批量修改檔案編碼格式

2021-09-11 06:03:34 字數 2061 閱讀 7230

由於編碼原因,在sublime等編輯器開啟的檔案中文出現亂碼,需要將檔案的編碼格式修改為utf-8

1、進入需要修改檔案目錄

//方法一:修改目下所有檔案編碼格式

find * -exec sh -c "enconv -l zh_cn -x utf-8 {}" \; //注意後面的結束標示 " \;"

//方法二

mkdir output

find *.txt -exec sh -c "iconv -f gb2312 -t utf-8 {} > output/{}" \;

注:檢視檔案的編碼格式命令

enca filename

一、ansii編碼

作為最早的編碼方法,ascii是最基礎的編碼方法。ascii碼最早只有後7位可以使用,被編碼成指令、標點、數字與英文本母,因此這種編碼方法叫做"american standard code for infomation intechange"。由於其它國家使用ascii碼時不存在本國家的字母符號,因此ascii碼發生了擴充套件,最高一位也用來編碼。於是將128到255的編碼稱為「擴充套件字符集」。

二、gb2312

gb2312是對ascii編碼的中文擴充套件。為了表示漢字,決定不使用ascii碼的擴充套件字符集,而將128到255的內容進行重新編碼,並用兩個位元組來表示漢字。因此0~127的意義不變,當兩個大於128的位元組放在一起時就表示乙個中文,其中高位元組用0xa1~0xf7編碼,低位元組用0xa1~0xfe。在這些編碼中,還包括數字符號、羅馬字母、希臘字母以及日語的假名。對於標點符號也用了兩個位元組編碼,形成了全形符號。後來為了增大容量,同樣要求高位元組用大於127的字元,但後乙個位元組沒有了限制,這種編碼方法稱為gbk編碼,其保留了gb2312的所有碼字匹配。

三、unicode

由於不同字型符號各有各的編碼方法,因此難於交流。iso(國際標準化組織)決定解決這個問題,提出一種統一的編碼方式。這種編碼方法使用兩個位元組,也就是乙個unicode字元占用兩個位元組。對於ascii編碼,uincode保留了下來,並用兩個位元組來表示,因此高位位元組為0。由於是重新編碼,因此gbk與unicode編碼是不相容的,必須通過查表進行轉換。

四、utf-8

由於計算機的興起,需要一種編碼方法能夠對unicode碼進行高效的傳輸,因此就提出了utf-8的編碼方法,一次傳輸8位,其實unicode編碼的一種對應編碼,編碼方法如下:如果乙個unicode在0x0000-007f之間,則編碼成0******xx,其中x為原來的unicode碼,其它的編碼方法為0x0080~0x07ff(unicode)->110***xx 10******(utf-8),0x0800~0xffff(unicode)->(1110***x 10****** 10******)(utf-8)。因此對於不同的unicode編碼,utf-8用1個,2個或3個位元組表示。

五、使用c++實現編碼轉換

static std::wstring mbytestowstring(const char* lpcszstring);

static std::string wstringtombytes(const wchar_t* lpwcszwstring);

static std::wstring utf8towstring(const char* lpcszstring);

static std::string wstringtoutf8(const wchar_t* lpwcszwstring);

std::wstring kklogobject::mbytestowstring(const char* lpcszstring)//ascii碼轉unicode編碼

std::string kklogobject::wstringtombytes(const wchar_t* lpwcszwstring)//unicode轉ascii編碼

std::wstring kklogobject::utf8towstring(const char* lpcszstring)//utf-8轉unicode

std::string kklogobject::wstringtoutf8(const wchar_t* lpwcszwstring)//unicode轉utf-8

批量修改檔案編碼格式

最近在製作手冊的時候遇到了乙個問題 文件亂碼 檢視檔案之後發現檔案編碼不對,總共100多個檔案,如果用編輯器另存為utf8,那就悲催了。所以自己就寫了個程式,批量修改檔案編碼格式。修改檔案編碼格式,例如 gbk轉utf8 支援多級目錄 param root path 需要進行轉碼的檔案路徑 para...

Python 批量修改檔案的編碼格式

使用說明 2 環境配置 python安裝 配置環境變數,chardet解壓放在python安裝目錄 lib site packages下 舉例 批量修改當前路徑下所有.cpp檔案的編碼格式為utf 8,如下 import os import sys import codecs import char...

利用iconv批量修改檔案編碼格式

iconv是linux系統命令,用於轉換檔案編碼。當中文檔案需要從gbk編碼轉為utf 8編碼時,使用該命令能夠快速的轉換編碼。使用如下 iconv f 原編碼 t 新編碼 originfile o newfile利用bash指令碼實現某個資料夾下批量檔案的轉碼 bin bash 轉換編碼方法 fu...