我们机构有大约28000篇文章,其编码不是utf-8。我被要求找到一种方法将其编码更改为utf-8。是否有任何linux或Windows命令更改文件的编码而不打开文件?显然,打开28000个文件并逐个更改它们并不是一个好主意!
答案 0 :(得分:5)
iconv
可用于将文本文件从一种编码转换为另一种编码。大多数Linux发行版应该拥有它 - 通常作为glibc
的一部分;如果没有,那么作为一个单独的可安装包。
所以,如果他们是拉丁语-1(ISO-8859-1),你可以这样做:
$ iconv -f ISO-8859-1 -t UTF-8 foo.txt >foo-utf8.txt
您可以使用find
将其整理成一行,例如:
$ tmpdir=$(mktemp -d -t $tempXXXXXX); find . -type f -exec iconv -f ISO-8859-1 -t UTF-8 {} >${tmpdir}/temp \; -exec mv ${tmpdir}/temp {} \; ; rmdir ${tmpdir}
但是你可以在半打的bash / python / perl /中使它更具可读性和更强大。
答案 1 :(得分:0)
您可以使用基本的shell命令轻松更改文件的编码。
$filesDir = Get-ChildItem "D:\Code"
$OutputDir="D:\programability\"
for ($j=0; $j -lt $filesDir.Count; $j++)
{
$SubDir=$filesDir[$j].FullName
[system.io.directory]::CreateDirectory($OutputDir+$filesDir[$j].name)
$files = Get-ChildItem $SubDir
for ($i=0; $i -lt $files.Count; $i++) {
$outfile = $OutputDir+$filesDir[$j].name+"\"+$files[$i].name
$files[$i].name
Get-Content $files[$i].FullName | Set-Content -Encoding UTF8 $outfile
}
}
这会将文件编码更改为UTF-8,包括子文件夹中的文件