如何转换成GB2312编码UTF8编码批Linux教程linux下

UTF8编码与GB2312编码区分为UTF8编码的SQL,脚本会出现乱码错误SQLPLUS,那么它将需要转换成GB2312编码UTF8编码转换,但很麻烦,萧边在这里教你如何在linux编码批量UTF8转换GB2312编码。


背景


我在utf8编码Oracle SQL脚本SQLPlus的批量导入,因为不懂如何设置SQLPlus识别UTF8格式,产生的混淆,错误的错误发生,不能继续在谷歌工作,在无果的情况只有想办法变换编码。


由于文件数量众多,手工转换太麻烦了。因此我们考虑用脚本进行批处理转换。幸运的是,互联网上有更多的脚本。唯一的麻烦是UTF8 BOM标签。


内容:


代码如下:


# /斌/狂欢!


循环在`找到。- F型名称*。sql打印`做


echo $环


MV F环loop.tmp美元美元


Dos2unix $loop.tmp


file_check_utf8 = ‘file_check_utf8.logrsquo;


sed -n ‘1lrsquo;loop.tmp美元,file_check_utf810美元。如果grep ‘^ 357 273 277rsquo;file_check_utf8美元, / dev /空2, 111。


回声‘UTF-8 bomrsquo;


SED-N-E ‘1s / / /我^ ..;E ‘W intermediate.txtrsquo;loop.tmp14美元。iconv -f UTF-8 -t GB2312啊


RM -射频loop.tmp美元


elif iconv -f UTF-8 -t GB2312 loop.tmp美元 / dev /空2118。然后





utf-8rsquo回声;


iconv -f UTF-8 -t GB2312 O环loop.tmp21美元美元。RM -射频loop.tmp美元


其他的


回声‘ANSIrsquo;


MV F环loop.tmp美元美元


FI


RM -射频file_check_utf8美元


对unix2dos #仿真,文本文件的最后一行必须有28的要求。SED的N - E的换行; / / r / grsquo;E W ’‘loop.tmp loop29美元美元。MV F环loop.tmp美元美元


多恩


# /斌/狂欢!


循环在`找到。- F型名称*。sql打印`做


echo $环


MV F环loop.tmp美元美元


dos2unix loop.tmp美元


file_check_utf8 = ‘file_check_utf8.logrsquo;


sed -n ‘1lrsquo;loop.tmp美元,file_check_utf810美元。如果grep ‘^ 357 273 277rsquo;file_check_utf8美元, / dev /空2, 111。


回声‘UTF-8 bomrsquo;


SED-N-E ‘1s / / /我^ ..;E ‘W intermediate.txtrsquo;loop.tmp14美元。iconv -f UTF-8 -t GB2312啊


RM -射频loop.tmp美元


elif iconv -f UTF-8 -t GB2312 loop.tmp美元 / dev /空2118。然后


utf-8rsquo回声;


iconv -f UTF-8 -t GB2312 O环loop.tmp21美元美元。RM -射频loop.tmp美元


其他的


回声‘ANSIrsquo;


MV F环loop.tmp美元美元


FI


RM -射频file_check_utf8美元


对unix2dos #仿真,文本文件的最后一行必须有28的要求。SED的N - E的换行; / / r / grsquo;E W ’‘loop.tmp loop29美元美元。MV F环loop.tmp美元美元


多恩


解释


1、处理UTF8的BOM,我没有找到一个好办法。最后,我用sed + grep来决定如果第一个三字节是 357 273 277,然后该文件必须是UTF8,然后使用sed删除三字节,然后把它。


2,为了避免重复或遗漏,脚本使用iconv转换文件没有BOM。转换成功,表明该文件是UTF8,否则是ANSI,即GB2312。


3,关于最后的sed命令,那是因为我的系统不unix2dos命令,所以它是模拟这样我可以查看和编辑方便在Windows。


以上是将UTF8编码在Linux下的编码GB2312的方式。经过变换后,我们可以解决随机码等问题。您可以使用命令镜像的批处理转换,您了解了吗