You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下如何将US-ASCII编码CSV转UTF-8?脚本转换失败求助

解决CSV文件编码转换为UTF-8的问题

问题分析

你的脚本存在两个核心问题:

  1. 使用的Perl编码转换命令未加载Encode模块,导致转换逻辑根本无法执行
  2. 当文件内容全为ASCII字符时,file -i会识别为us-ascii,但这类文件本身就是合法的UTF-8文件(UTF-8完全兼容ASCII)

解决方案

1. 修复Perl编码转换脚本

你的Perl命令缺少use Encode;声明,导致Encode::encode函数无法调用。修正后的完整脚本如下:

header="SourceFileIdentifier,Document Name,Number of pages,Page Number,Bank Name,Bank Address,Account Holder Name,Account Number,IBAN / BIC,Currency,Statement Number,Statement From Date,Statement To Date,Handwriting present,LineID,Date,Value,Reference,Description,Debit,Credit,Balance"

while read -r series; do
    # 写入header并转码为UTF-8
    echo "$header" | perl -MEncode -pe '$_ = Encode::encode("utf-8", $_)' > "${series}.csv"
    # 写入匹配的行并转码为UTF-8
    grep "$series" sample.csv | perl -MEncode -pe '$_ = Encode::encode("utf-8", $_)' >> "${series}.csv"
done < forty.csv

2. 理解file -i的判定逻辑

如果输出文件的所有字符都在ASCII范围内(0x00-0x7F),file -i会显示charset=us-ascii,但这完全符合UTF-8规范——UTF-8对ASCII字符的编码和ASCII完全一致,这类文件可以被任何UTF-8兼容的工具正常读取。

3. 强制让file识别为UTF-8(可选)

如果必须让file命令显示charset=utf-8,可以添加UTF-8 BOM(字节顺序标记),虽然CSV格式通常不推荐使用BOM,但部分Windows工具可能需要。修改脚本如下:

header="SourceFileIdentifier,Document Name,Number of pages,Page Number,Bank Name,Bank Address,Account Holder Name,Account Number,IBAN / BIC,Currency,Statement Number,Statement From Date,Statement To Date,Handwriting present,LineID,Date,Value,Reference,Description,Debit,Credit,Balance"

# UTF-8 BOM的十六进制是EF BB BF
utf8_bom=$(printf '\xef\xbb\xbf')

while read -r series; do
    # 先写入BOM,再写入转码后的header
    echo -n "$utf8_bom" > "${series}.csv"
    echo "$header" | perl -MEncode -pe '$_ = Encode::encode("utf-8", $_)' >> "${series}.csv"
    # 写入匹配的行并转码为UTF-8
    grep "$series" sample.csv | perl -MEncode -pe '$_ = Encode::encode("utf-8", $_)' >> "${series}.csv"
done < forty.csv

4. 验证实际编码

用hexdump -C filename.csv查看文件:

  • 如果是纯ASCII内容,每个字节都是0x00-0x7F,这就是合法的UTF-8
  • 如果添加了BOM,文件开头会显示ef bb bf三个字节,此时file -i会明确显示charset=utf-8

内容的提问来源于stack exchange,提问作者ROHAN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 21:06:27