技术标签: linux 文件转换ascii
我正在尝试将一堆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.我会编辑答案,以增加一个实验。
[email protected]mothy 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输出文件。
Momentjs在Vue的使用
/*** 删除input字符串中的html格式*&我们在网页中发布文章时经常会使用到富文本编辑器,富文本编辑器可以让文章内容个性化显示,同时也能添加一些媒体元素,丰富文章内容。案例一、比如:原字符串var StringFirst = "12:30:08";现在要删掉冒号,变成123008就可以先splitvar splitFirst = StringFirst.splitpublic st...
威纶通触摸屏离线模拟正常,为什么下载到屏幕后部分按钮开关等不显示?我们在使用威纶通触摸屏时可能会碰到这样的情况,即在自己的电脑上离线模拟是正常的,但是为什么把屏幕的程序下载到触摸屏之后,原先画面的按钮开关、数值输入等元件消失不见了,很多人可能误以为是屏幕有问题或者屏幕的固件版本问题,其实这是个很简单的问题,我们仔细看下面的2张图,可以发现:在元件属性中如果仅是“写入”某个地址的功能,那么都可以正常显示;在元件属性中,若是有“读取和写入”2种功能的,此时可能不会正常显示,原因就是此时屏幕还未和PLC
厉害了!打工人用Python分析西安市职位信息blog.yuanpei.me在上一篇博客中,我和大家分享了整个11月份找工作的心路历程,而在找工作的过程中,博主发现西安大小周、单休这种变相“996”的公司越来越多,感慨整个行业越来越“内卷”的同时,不免会对未来的人生有一点迷茫,因为深圳已经开始试运行“996”了,如果有一天“996”被合法化并成为一种常态,那么,我们又该如何去面对“人会一天天衰老...
//2015年10月5日 12:59:19基于Linux kernel 3.10.87分析一、什么是device tree?二、为什么使用device tree?三、怎么使用device tree?1、初始化流程。也就是扫描dtb并将其转换成Device Tree Structure。2、传递运行时参数传递以及platform的识别流程分析3、如何将Device Tre
树莓派4B 8G的安装过程
1:只对 where 和 order by 子句中需要的列添加索引,多余的索引智慧导致不必要的硬盘空间爱你消耗。每次修改表信息时会更新索引,因此有索引的表性能会相应降低。2:对于要使用索引的列要使用属性 NOT NULL , 这样就永远不会存储 null 值。3:最好用唯一化索引,一般情况下,当查询优化程序发现某个数据在超过30%的行里都有出现时,通常会不使用索引而进行全盘扫描。4...
一开始还以为是什么dp题目,不过,仔细想一想第一题不会出这么难吧,所以,就考虑简单做法。贪心的想,每次把每段区间都加到最大,然后分开的每个区间都这样操作就好了。不过这样模拟很难实现,我们要优化一下,记录一个上次最高的y,如果当前x小于这个,对答案的贡献就加(y-x),表示这段要这么多次才可以符合要求。代码十分短小,主要是想法。#include<bits/stdc++.h>#define N 100
NuttX 是一个实时操作系统(RTOS),其重点遵从特定的标准并且尽量小型化。 可伸缩良好且可适应从8位到32位单片机环境,Nuttx主要遵循的标准是 Posix和ANSI标准。 其他的一些来自于Unix或者其他常规的实时操作系统(比如VxWorks)的标准的API的导入原因,要么是因为该功能不在如上标准中,要么是因为该功能不适合嵌入式环境(比如fork())。NuttX首次由格雷戈里•纳特于2
题目描述一个旅行者有一个最多能装MMM公斤的背包,现在有nnn件物品,它们的重量分别是W1,W2,...,WnW_1,W_2,...,W_nW1,W2,...,Wn,它们的价值分别为C1,C2,...,CnC_1,C_2,...,C_nC1,C2,...,Cn,求旅行者能获得最大总价值。输入第一行:两个整数,MMM(背包容量,M≤200M\leq200M≤200)和NNN(物品数量,N≤30)N\leq30)N≤30)输入样例10 42 13 34 57 9输出样例12
Mifare plus卡调试总结默认nxp发行的plus卡为L0级别未初始化的卡片,此时active操作表现为支持ISO1443-4的CPU卡特性(ATQA: 02 00 ,SAK:20 UID: CD 65 E5 03),当执行写相关AES KEY及数据块初始化并commit后则进入L1安全级别,其active操作表现为一张M1S70卡特性(ATQA: 02 00 ,SAK:18
####前言也许有同学很迷惑:tornado不是标榜异步非阻塞解决10K问题的嘛?但是我却发现不是torando不好,而是你用错了.比如最近发现一个事情:某网站打开页面很慢,服务器cpu/内存都正常.网络状态也良好.后来发现,打开页面会有很多请求后端数据库的访问,有一个mongodb的数据库业务api的rest服务.但是它的tornado却用错了,一步步的来研究问题:####说明以