【目标检测】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 {}" \;

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