日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

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

GB18030>GBK>GB2312>ASCII

ISO-8859-1>ASCII

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

UTF-8是unicode的一種實現形式,
UTF-16、UTF-32基本不用,似乎沒有學習的必要。


注意使用enca命令來查看文件的當前編碼,不要使用file -i,后者有時候不準。

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

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

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 處的非法輸入序列

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

另外,根據以下鏈接可知

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

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

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

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進行轉化的時候,如果出現以下報錯

。。。

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

./C23-Mine/C23-Mine54.txt

。。。

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


最后是收尾工作,刪除所有gbk后綴的文件

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




總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。