转换到Linux下的编码gb2312utf8编码的方法
在目前,进口UTF8编码的SQL脚本将出现乱码错误。在这个时候,我们需要将UTF8编码为GB2312编码。下面我们介绍如何在linux下进行转换。UTF8编码与GB2312编码区分为UTF8编码的SQL,脚本会出现乱码错误SQLPLUS,那么它将需要转换成GB2312编码UTF8编码转换,但很麻烦,萧边在这里教你如何在linux编码批量UTF8转换GB2312编码。
背景
I am in the sqlplus batch import of UTF8 encoding Oracle SQL script, because do not understand how to set sqlplus recognition UTF8 format, resulting garbled, wrong error occurs, and unable to continue working in ogle, under the condition of the fruit only to think of a way to transform encoding.
由于文件数量众多,手工转换太麻烦了。因此我们考虑用脚本进行批处理转换。幸运的是,互联网上有更多的脚本。唯一的麻烦是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,我没有找到一个好办法,最后sedgrep判断,如果前三个字节是 357 273 277,则该文件必须使用UTF8,sed删除三字节的转换
2,为了避免重复或遗漏,脚本使用iconv转换文件没有BOM。转换成功,表明该文件是UTF8,否则是ANSI,即GB2312。
3,关于最后的sed命令,那是因为我的系统不unix2dos命令,所以它是模拟这样我可以查看和编辑方便在Windows。
以上是将UTF8编码在Linux下的编码GB2312的方式。经过变换后,我们可以解决随机码等问题。您可以使用命令镜像的批处理转换,您了解了吗