linux 文件转换ascii,关于linux:如何将文件从ASCII转换为UTF-8?

我正在尝试将一堆A文件从ASCII转换成UTF-8。

为此,我尝试使用iconv:

iconv -f US-ASCII -t UTF-8 infile > outfile

-f ENCODING输入的编码

-t ENCODING输出的编码

但那个文件没有转换成UTF-8。这是一个.dat文件。

在发布这篇文章之前,我搜索了谷歌并找到了如下信息:

ASCII is a subset of UTF-8, so all ASCII files are already UTF-8 encoded. The bytes in the ASCII file and the bytes that would result from"encoding it to UTF-8" would be exactly the same bytes. There's no difference between them.

强制从US-ASCII编码到UTF-8(ICONV)

在字符集之间转换文本文件的最佳方法?

但是上面的链接没有帮助。

尽管它是ASCII格式的,但它将支持UTF-8,因为UTF-8是一个超级集,从我这里接收文件的另一方需要文件编码为UTF-8。他只需要UTF-8格式的文件。

有什么建议吗?

一点也不清楚问题是什么——只要给那个人原始的ASCII文件就行了。如果它们是真正的ASCII码,那么它们已经是UTF-8码了,所以应该没问题。到底怎么了?

@另一方jon skeet希望文件格式为utf-8,当我尝试使用命令文件-i outfile时,它返回的是ascii,但他们严格要求它为utf-8。即使ASCII是UTF-8的子集。

如果它是真正的ASCII码,那么它是"严格的UTF-8"。根据你的评论,如果对方因为file的输出而拒绝使用ASCII文件,这听起来就好像对方基本上已经崩溃了。他们应该接受ASCII文件是UTF-8文件,然后继续处理它。

@在没有其他细节的情况下,我倾向于同意。建议和鼓励他们接受来自"文件"的两个回复可能是值得的。他们的API将更加灵活和健壮,他们将避免自己不得不与使用它的其他人反复讨论这个问题。如果他们不能或不愿意这样做,那么在他们的文档中至少有一个非常明确的声明,即输入文件中需要BOM,使用这种精确的语言,也可能会有很长的路要走。

我对这个问题有点困惑,因为正如您所指出的,ASCII是UTF-8的一个子集,所以所有的ASCII文件都已经是UTF-8编码的。

如果您正在向另一方发送只包含ASCII字符的文件,但另一方抱怨它们不是"UTF-8编码的",那么我猜它们是指ASCII文件没有明确指示内容是UTF-8的字节顺序标记这一事实。

如果确实如此,那么可以使用下面的答案添加字节顺序标记:

ICONV:使用BOM从Windows ANSI转换为UTF-8

如果另一方表示不需要"bom"(字节顺序标记),但仍在抱怨文件不是utf-8,则另一种可能是初始文件实际上不是ASCII,而是包含使用ANSI或ISO-8859-1编码的字符。

在RAM对使用"file"命令查找类型的另一方作出评论后,编辑以添加以下实验

Tims-MacBook-Pro:~ tjohns$ echo 'Stuff' > deleteme

Tims-MacBook-Pro:~ tjohns$ cat deleteme

Stuff

Tims-MacBook-Pro:~ tjohns$ file -I deleteme

deleteme: text/plain; charset=us-ascii

Tims-MacBook-Pro:~ tjohns$ echo -ne '\xEF\xBB\xBF' > deleteme

Tims-MacBook-Pro:~ tjohns$ echo 'Stuff' >> deleteme

Tims-MacBook-Pro:~ tjohns$ cat deleteme

Stuff

Tims-MacBook-Pro:~ tjohns$ file -I deleteme

deleteme: text/plain; charset=utf-8

提摩西·约翰斯谢谢你的解释。其他缔约方使用文件格式检查文件——我将文件输入ASCII,因为它们像UTF-8一样需要进一步处理。

@Ram in that case I'm about 98%certain the other party is looking for the Byte order Mark.On Mac Os file will output"text/plain;charset=UTF-8"if it's there,and"text/plain;charset=US-ASCII"if it's not.我会编辑答案,以增加一个实验。

Hi@timothy Johns I was working in Linux Environment.他们为UTF-8提出的理由是,他们希望得到更多的特征支持,而这些特征在美国信息交换标准码中是不可用的。Please note that all this is to process the data in hadoop(data world).

提摩西·约翰斯谢谢你的输入。我试着使用下面的命令并将它转换为UTF-8格式的ASCII文件。输出文件;当我给ASCII输入文件时,它是返回我UTF-8输出文件。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值