【目標檢測】UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb3 in position 4886: invalid start byte

Q:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb3 in position 4886: invalid start byte

在Vim中可以直接查看文件編碼
:set fileencoding
即可顯示文件編碼格式。
如果你只是想查看其它編碼格式的文件或者想解決用Vim查看文件亂碼的問題,那麼你可以在
~/.vimrc 文件中添加以下內容:

set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936

出現這種問題的原因是因爲,windows的文件 名 中文編碼 默認爲GBK,而Linux 中默認文件 名 編碼 爲UTF8,由於編碼 不一致,所以導致了文件 名 亂碼的問題,解決這個問題需要對文件 名 進行轉碼。 

開始之前,請先安裝enca這個軟件包。enca是Linux等系統下用來查看文件編碼和轉換文件編碼的工具。

下面一行Linux命令能夠查找當前目錄下所有文件中,哪些文件不是UTF-8編碼。我對文件加了些限制,用find命令時候,排除了所有目錄下的.svn目錄,且只查找後綴爲.json的文件。

find . ! -iregex '.*\.svn.*' -type f -name '*.json' -exec bash -c "enca -L zh_CN {}|grep GB2312 > /dev/null && echo {}" \;

既然找到了這些非UTF8編碼的文件,接下來再用一條命令將他們都轉換成UTF8編碼。

find . ! -iregex '.*\.svn.*' -type f -name '*.json' -exec bash -c "enca -L zh_CN {}  | grep GB2312 >/dev/null && enconv -L zh_CN -x UTF-8 {}" \;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章