UTF8エンコーディングとGB2312コーディングが異なる場合、SQLPLUSのSQLスクリプトのインポートUTF8エンコーディングを文字化けされますエラー、あなたはGB2312にUTF8エンコーディングを変換する必要がGB2312エンコーディングへのLinux UTF8エンコーディングの下でバッチを変換する方法コーディングは、1つずつ変換するのは非常に面倒です。次の小シリーズでは、LinuxでUTF8エンコーディングをGB2312エンコーディングに変換する方法を説明しています。とき
背景
I一括インポートSQLスクリプトUTF8でエンコードされたOracle SQLPLUSを使用して、そのような間違ったラインと、文字化けが生じ、SQLPLUSのUTF8形式を作るために、エラーを原因の認識を設定する方法がわかりませんそして、作業が続行できないように、グーグルの実のない場合は、私はコードを変換する方法を見つけなければなりませんでした。
ファイルの数が多いため、手動での変換は面倒なので、スクリプトを使ってバッチ変換することを考えましたが、幸いなことに、インターネット上には関連するスクリプトがたくさんあります。
内容:
コードは次のとおりです。
#! /bin /bash
`findの中のループのための
。 -type f -name' *。sql' -print`do
echo $ loop
mv -f $ loop $ loop.tmp
dos2unix $ loop.tmp
file_check_utf8 =‘ file_check_utf8.log’
のsed -n‘ 1リットル’. $ loop.tmp「の場合はgrep&lsquo $ file_check_utf810; ^ \\\\ 357 \\\\ 273 \\\\ 277’ $ file_check_utf8 "を/dev /null 2" & 111その後、
エコー‘. UTF-8 BOM’
のsed -n -e‘ 1S /^ .. 。 //’ -e‘ intermediate.txt&rsquoワット; .. $ Loop.tmp14のiconv -f UTF-8 -t GB2312 -o $ループintermediate.txt15のrm -rf intermediate.txt
RM -rf $ loop.tmp
のelifのiconv -f UTF-8 -t GB2312 $ loop.tmp "を/dev /null 2" &. 118その後、
エコー‘ UTF-8’ < BR>
のiconv -f UTF-8 -t GB2312 -o $ループ$ loop.tmp21のrm -rf $ loop.tmp
他の
エコー‘. ANSI’
MV -f $ loop.tmp $ループ
Fiの
のrm -rf $ file_check_utf8
#シミュレーションunix2dosといった、要件は、テキストの最後の行は、改行をファイルでなければなりません28. SED -n -e‘ S /$ /\\ R /G’ -e‘ <行わ’. $ loop.tmp $ loop29 MV -f $ loop.tmp $ループ
W BR >
#! /bin /bash
`findの中のループのための
。 -type f -name' *。sql' -print`do
echo $ loop
mv -f $ loop $ loop.tmp
dos2unix $ loop.tmp
file_check_utf8 =‘ file_check_utf8.log’
のsed -n‘ 1リットル’. $ loop.tmp「の場合はgrep&lsquo $ file_check_utf810; ^ \\\\ 357 \\\\ 273 \\\\ 277’ $ file_check_utf8 "を/dev /null 2" &#038; 111その後、
エコー‘. UTF-8 BOM’
のsed -n -e‘ 1S /^ .. 。 //’ -e‘ intermediate.txt&rsquoワット; .. $ Loop.tmp14のiconv -f UTF-8 -t GB2312 -o $ループintermediate.txt15のrm -rf intermediate.txt
RM -rf $ loop.tmp
のelifのiconv -f UTF-8 -t GB2312 $ loop.tmp "を/dev /null 2" &#038;. 118その後、
エコー‘ UTF-8’ < BR>
のiconv -f UTF-8 -t GB2312 -o $ループ$ loop.tmp21のrm -rf $ loop.tmp
他の
エコー‘. ANSI’
MV -f $ loop.tmp $ループ
Fiの
のrm -rf $ file_check_utf8
#シミュレーションunix2dosといった、要件は、テキストの最後の行は、改行をファイルでなければなりません28. SED -n -e‘ S /$ /\\ R /G’ -e‘ <行わ’. $ loop.tmp $ loop29 MV -f $ loop.tmp $ループ
W BR >
解説
1. UTF8のBOMを扱う良い方法が見つからなかったので、最後にsed + grepで判断したところ、最初の3バイトが\\\\ 357 \\\\ 273 \\\\ 277の場合、ファイルはUTF8でなければなりません。これら3バイトを削除して
2を変換するにはsedを使用してください。重複や省略を避けるために、スクリプトでiconvを使用してください。 BOMは、それ以外の場合は、ANSIは、最終的なsedコマンドについてGB2312
3で表し何unix2dosといった私のシステム上でコマンドないがあるので、それはそう、で、成功した変換文書の一握りがUTF8で変換しようとしていないファイルWindowsでの閲覧や編集を容易にするためにシミュレーションを行いました。
以上がLinuxでのGB2312エンコーディングへのUTF8エンコーディングの一括変換の紹介です。ミラーバッチ変換、あなたは学びましたか?
2台のサーバー間でファイル転送を行うには、scpコマンドを使用します。Linuxシステムでは、scpコマンドの使用は簡単で実用的です。この節では、scpコマンドを使用してLinuxサーバー間でファイル
Dockerを使用した後、多くのユーザーから、Dockerコンテナに遭遇した時刻とホストの時刻が同期していないと報告されました。実際、これは主にホストがタイムゾーンを設定したが、Dockerコンテナが
viはLinuxの最も基本的なテキストエディタであるフルスクリーンのテキストエディタで、Ubuntuシステムではviを編集するときに矢印キーが間違っているため、矢印キ
Ubuntuではコマンドを使用するときにコマンドプロンプトPS1を変更する必要がある場合がありますが、多くの人がPS1を変更する方法を知らない一緒に学びましょう。 コマンドは、コマンドプロンプトを