shell腳本中設(shè)置字符集 為什么Linux系統(tǒng)默認(rèn)使用utf8編碼?
為什么Linux系統(tǒng)默認(rèn)使用utf8編碼?GBK是微軟為簡(jiǎn)體中文開發(fā)的本地代碼,被工信部起訴。每個(gè)國家或地區(qū)都會(huì)制定和使用自己的地方代碼,一些企業(yè)也會(huì)制定某個(gè)國家或地區(qū)的地方代碼(GBK是微軟制定的簡(jiǎn)
為什么Linux系統(tǒng)默認(rèn)使用utf8編碼?
GBK是微軟為簡(jiǎn)體中文開發(fā)的本地代碼,被工信部起訴。每個(gè)國家或地區(qū)都會(huì)制定和使用自己的地方代碼,一些企業(yè)也會(huì)制定某個(gè)國家或地區(qū)的地方代碼(GBK是微軟制定的簡(jiǎn)體中文代碼)。當(dāng)打開用本地代碼編寫的文件而不指定使用的本地代碼時(shí),可能會(huì)看到亂碼。
為了解決本地編碼混亂的問題,Unicode和ISO這兩個(gè)組織已經(jīng)開始開發(fā)一種字符編碼系統(tǒng),可以容納不同國家的字符而不發(fā)生沖突。目前,這兩個(gè)組織相互承認(rèn),并有兼容的編碼。
目前,許多計(jì)算機(jī)系統(tǒng)使用2字節(jié)(16位整數(shù))或4字節(jié)(32位整數(shù))統(tǒng)一編碼。統(tǒng)一編碼只描述每個(gè)字符的編碼,但沒有解釋如何將編碼存儲(chǔ)在存儲(chǔ)介質(zhì)上。
目前,計(jì)算機(jī)系統(tǒng)中有前高字節(jié)和前低字節(jié)兩種整數(shù)存儲(chǔ)模式,因此前高字節(jié)的數(shù)據(jù)在前低字節(jié)的系統(tǒng)中會(huì)出現(xiàn)異常,反之亦然。同時(shí),我們知道很多編程系統(tǒng)在處理字符串時(shí),都會(huì)把值為0的字節(jié)作為字符串的結(jié)尾,不管是前高字節(jié)還是前低字節(jié),字符串中都會(huì)出現(xiàn)大量值為0的字節(jié),因此傳統(tǒng)的字符串處理功能無法使用。
為了解決統(tǒng)一編碼的存儲(chǔ)和與現(xiàn)有字符串處理函數(shù)兼容的問題,引入了utf8編碼。這種編碼規(guī)定了統(tǒng)一編碼的存儲(chǔ)方式,并確保值為0的字節(jié)仍然用作字符串的結(jié)尾,這樣就可以繼續(xù)使用原來的字符串處理函數(shù),而不需要開發(fā)新的集合。
當(dāng)然,utf8也有一個(gè)問題,那就是它是可變長(zhǎng)度編碼。統(tǒng)一編碼的字符可以編碼為一個(gè)字節(jié)、兩個(gè)字節(jié)、三個(gè)字節(jié)、四個(gè)字節(jié)(版本1)或六個(gè)字節(jié)(版本2)。
shell腳本怎么生成運(yùn)行日志?
解決方案:將編碼格式設(shè)置為UTF-8,如紅色字體。
#定義調(diào)試優(yōu)先級(jí),R用于日志輸出
log4j.Rootlogger=debug,file
#將日志輸出類型設(shè)置為file type
#log4jappender.file=組織. apache.log4j. fileappender
#設(shè)置日志輸出類型,每天一個(gè)文件
log4jappender.file=組織. apache.log4j. dailyrollingfileappender
#add
在每天生成的文件之后添加log4j附錄文件e、 Datepattern=“.”yyyymmdd
#設(shè)置日志文件名/home/Weblogic/oneboss/0068統(tǒng)計(jì)日志
log4j。appender.file.file=/home/weblogic/oneboss/0068統(tǒng)計(jì)日志
#每次在文件末尾寫入新的日志信息
log4jappender.file.Append=真
#日志輸出信息格式類型
log4jappender.file.layout=組織. apache.log4j. patternlayout
#日志輸出信息的格式為newline,date,priority,[類名],log information,newline===%n%d[%C]-%m%n%m%n
log4jappender.file.layout文件. conversionpattern=%m%n
#設(shè)置輸出日志文件代碼(can控制亂碼)
linux批量修改文件字符集shell腳本?
批量轉(zhuǎn)換文件的代碼當(dāng)然是通過命令轉(zhuǎn)換的。如果文件太多,可以編寫shell腳本進(jìn)行批轉(zhuǎn)換。Linux系統(tǒng)中轉(zhuǎn)換文件代碼格式的命令是iconv。介紹了iconv命令的使用。iconv命令非常簡(jiǎn)單。記住它的三個(gè)參數(shù)。以下是它的三個(gè)參數(shù):-f參數(shù):表示from,它是原始編碼格式-t參數(shù):表示to,它是以后的新編碼-O參數(shù):表示輸出文件,它是轉(zhuǎn)換編碼后的新文件的文件名。如果沒有此參數(shù),新文件將更改其重寫的原始編碼格式。以下是將GB2312編碼文件轉(zhuǎn)換為UTF-8編碼的示例:iconv-f GB2312-t utf8 mygb2312.txt-O myutf8.txt。在本例中,mygb2412.txt是要轉(zhuǎn)換的文件,myutf8.txt是轉(zhuǎn)換后的新文件。