Windowsでファイルを作成しましたDE_CopyOldToNew.sh
。次に、WinSCPを使用してファイルをLinuxにアップロードします。このファイルには、ファイルを新しいフォルダにコピーし、新しいファイル名を割り当てる複数のcpコマンドが含まれています。このコマンドには、ウムラウトを含むコマンドが含まれています(たとえば、 aを実行するとGewährleistungsbürgschaft
ウムラウトcat DE_CopyOldToNew.sh
が「壊れた」ように表示されます。すると、エラーが発生し、フォルダとファイルのウムラウトが表示されます。良い言葉がないので)なる原因は何ですか?Gew▒hrleistungsb▒rgschaft
view DE_CopyOldToNew.sh
Gewährleistungsbürgschaft
cp: cannot stat
Gew\344hrleistungsb\374rgschaft
binary
text
dos2unix DE_CopyOldToNew.sh
答え1
ファイルはISO-8859エンコーディング(おそらくWindows CP1252またはISO-8859-15)のいずれかで作成され、LinuxベースのシステムはUTF-8エンコーディングを期待するように設定されています。
これを簡単に確認できます。
# Original text
printf 'Gew\344hrleistungsb\374rgschaft\n'
Gew�hrleistungsb�rgschaft
# What character set
printf 'Gew\344hrleistungsb\374rgschaft\n' | file -
/dev/stdin: ISO-8859 text
# Transcoded text
printf 'Gew\344hrleistungsb\374rgschaft\n' | iconv -f iso-8859-15 -t utf-8
Gewährleistungsbürgschaft
# What character set
printf 'Gew\344hrleistungsb\374rgschaft\n' | iconv -f iso-8859-15 -t utf-8 | file -
/dev/stdin: UTF-8 Unicode text
解決策?
ソースシステムはファイルをUTF-8として生成します(Windowsアプリケーションはこの文字セットをサポートします)。
Linuxベースのシステムを再びISO-8859にダウングレードします。推奨されていません(ただし可能です)
転送後のファイル変換:
iconv -f iso-8859-15 -t utf-8 DE_CopyOldToNew.sh >DE_CopyOldToNew.sh.tmp && mv -f DE_CopyOldToNew.sh.tmp DE_CopyOldToNew.sh