将文件转换为iso-8859-1(从utf-8确定,但在us-ascii文件上失败)

时间:2017-11-22 14:43:16

标签: git encoding utf-8 iso-8859-1

我有一个git存储库,html,js,php文件大多以UTF-8编码。所有这些都应该用UTF-8编码,但执行file -i *显示大多数都是UTF-8,但其中一些是这样的:

  

file.html.twig:text / plain;字符集= US-ASCII

另外,如果我用Sublime文本打开那些文件,它会显示UTF-8。如果我执行此转换:

iconv -f us-ascii -t iso-8859-1 file.html.twig -o file2.html.twig

iconv -f utf-8 -t iso-8859-1 file.html.twig -o file2.html.twig

没有任何变化,而如果我通过utf-8文件执行此命令,则实际上已完成转换。

为什么会这样?我知道我们-ascii是utf-8的一个子集,但iconv似乎无法改变这个字符集。

(我的最终目标是使用iso-8859-1中的文件维护一个git存储库,而git似乎无法识别文件编码,这将是第二个问题,首先我需要解决这个问题...)

谢谢

1 个答案:

答案 0 :(得分:0)

如果他们是UTF-8,那么请不要让像file这样的猜测者误导你。它可以给出许多答案,给出一个答案;每当它猜到ASCII时,它也可能包括UTF-8,iso-8859-1 等几十个。

因此,请将所有UTF-8文件转换为iso-8859-1。但要明白它可能是一个有损转换,所以不要覆盖iconv的默认行为,告诉你有关错误的信息。

哦,但是,您正在转换可能具有其编码内部声明的文件(例如,HTML和XML),您应该更新它们的声明。

并且,如果有错误,您通常可以根据任何语言(=> \ uD83D \ uDEB2或类似)或标记规则将内容更改为iso-8859-1不支持的字符的不同表示形式(= &&;🚲)适用。