iconv命令实现批量修改文件编码

一、 场景:

网站迁移,原网站在windwos系统的网站空间上,现需要迁移到云主机的linux系统中。
众所周知,windwos存储文件的格式(默认是gbk)与linux的存储格式(默认uft8)是不相同的,直接将windwos中的文件直接将windwos中的文件上传到linux中会出现乱码。

二、解决方法步骤:

1.经过确认,网站涉及到中文字符的都为.html文件,使用命令查看网站有多少个.html后缀的文件。

#find . -name "*.html"|wc -l
1475

2.文件的数量有点多,常用修改编码的iconv命令进行批量修改。

iconv命令格式:iconv -f 文件原编码 -t转换后的编码  源文件 输出文件
iconv命令支持的编码:iconv -l

3.编写脚本批量修改

cat name.sh 
#!/bin/bash
find . -name "*.html" >file01.txt
while read line
do
iconv -f gbk -t UTF-8 $line -o a.html
        if [ $? -eq 0 ];then
                mv a.html $line
        else
                echo "$line"
        fi
done < file01.txt
### 使用命令行或脚本批量转换文件编码格式 #### Linux环境下的`iconv`命令 对于Linux用户而言,可以利用`iconv`命令来进行文件编码转换工作。此命令能够识别多种字符集并支持双向转换。为了执行批量操作,通常会将其嵌入到shell脚本之中。下面给出了一种基于bash shell的方式[^1]: ```bash #!/bin/bash for file in *.txt; do iconv -f GBK -t UTF-8 "$file" -o "${file%.txt}_converted.txt" done ``` 这段代码遍历当前目录下所有的`.txt`文件,并尝试将它们从GBK编码转换为UTF-8编码。 #### Windows PowerShell中的解决方案 针对Windows平台上的用户,则可以通过PowerShell来完成相同的任务。这里展示了一个简单的例子,它读取指定路径下的所有文本文件并将它们的内容重新保存为不同的编码格式[^4]: ```powershell Get-ChildItem -Path "C:\path\to\files\" -Filter "*.txt" | ForEach-Object { $content = Get-Content $_.FullName -Raw -Encoding UTF8; [System.IO.File]::WriteAllText($_.FullName, $content, [System.Text.Encoding]::Default); } ``` 请注意,在上述实例中,`-Raw`参数被用来一次性加载整个文件内容而不是逐行处理;而最后一步则是采用.NET框架提供的API直接写回更改后的数据至原位置。 #### 利用第三方软件辅助——Notepad++ 除了编写自定义脚本外,还可以借助一些图形界面的应用程序简化流程。例如,Notepad++就提供了方便易用的功能让用户快速调整多个文档的编码方式。只需打开目标文件夹内的任意一个项目,随后选择菜单栏里的“编辑(E)”-> “EOL 转换(CRLF/LF/CR...)" 或者 "编码(Encode)" 来改变默认设置即可[^5].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值