日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

各种编码范围总结以及linux下面的编码批量转化

發(fā)布時間:2023/12/20 linux 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 各种编码范围总结以及linux下面的编码批量转化 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

GB18030>GBK>GB2312>ASCII

ISO-8859-1>ASCII

UTF是世界級別的,
GB18030是中國推廣的,UTF和GB18030這兩種正在競爭。

UTF-8是unicode的一種實現(xiàn)形式,
UTF-16、UTF-32基本不用,似乎沒有學(xué)習(xí)的必要。


注意使用enca命令來查看文件的當(dāng)前編碼,不要使用file -i,后者有時候不準(zhǔn)。

比如得到當(dāng)前文件的類型是GBK以后,那么就在下列命令中對應(yīng)的地方輸入GBK即可

然后就可以進(jìn)行編碼轉(zhuǎn)化(下面的命令中有兩個./是需要修改的,表示當(dāng)前文件在哪里,以及要把文件輸出到哪里)

find ./ -type f -exec iconv -f GBK -t UTF-8 {} -o ./{} \;
-f:from的意思
-t:to的意思
-f和-t的意思是從哪里來,到哪里去
整條命令的意思是:你是誰,你從哪里來,到哪里去?
所以這個命令中的GBK也可以改為GB18030

但是為了盡可能少報錯,最好使用GB18030,因為他的涵蓋范圍是最廣的,但是enca命令并不支持GB18030,所以使用GBK作為源頭(也就是寫在-f后面)就可以了,可能出錯的情況類似如下:

iconv: 未知 28242 處的非法輸入序列

網(wǎng)上雖然說可以增加-c選項,但是我覺得這個不是個合理的解決方案,好在出錯的字符很少,確實可以這么做。

另外,根據(jù)以下鏈接可知

https://www.zhihu.com/question/34856351

由于UTF和GB18030屬于兩套體系,所以他們是互相不完全兼容的。

批量轉(zhuǎn)化代碼(直接遍歷終端當(dāng)前路徑下面的所有最底層子目錄和所有文件)

find ./ -type f -name "*.txt"|while read line;do?
>echo $line;?
>iconv -f GBK -t UTF-8 $line > ${line}.utf8;?
>mv $line ${line}.gbk;?
>mv ${line}.utf8 $line;?
>done

上面的“>”是在終端中輸入“find ./ -type f -name "*.txt"|while read line;do?”以后,終端會自動輸入的,自己不用再輸入第二遍。

另外,在iconv進(jìn)行轉(zhuǎn)化的時候,如果出現(xiàn)以下報錯

。。。

./C23-Mine/C23-Mine51.txt
iconv: 未知 353 處的非法輸入序列

./C23-Mine/C23-Mine54.txt

。。。

那么就表示在轉(zhuǎn)化C23-Mine51.txt這個文件時報錯,但是其實基本上產(chǎn)生的字符損失是極小的。


最后是收尾工作,刪除所有g(shù)bk后綴的文件

find -name "*.gbk" -exec rm -f {} \;




總結(jié)

以上是生活随笔為你收集整理的各种编码范围总结以及linux下面的编码批量转化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。