我有一个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似乎无法识别文件编码,这将是第二个问题,首先我需要解决这个问题...)
谢谢
答案 0 :(得分:0)
如果他们是UTF-8,那么请不要让像file
这样的猜测者误导你。它可以给出许多答案,给出一个答案;每当它猜到ASCII时,它也可能包括UTF-8,iso-8859-1 和等几十个。
因此,请将所有UTF-8文件转换为iso-8859-1。但要明白它可能是一个有损转换,所以不要覆盖iconv的默认行为,告诉你有关错误的信息。
哦,但是,您正在转换可能具有其编码内部声明的文件(例如,HTML和XML),您应该更新它们的声明。
并且,如果有错误,您通常可以根据任何语言(=> \ uD83D \ uDEB2或类似)或标记规则将内容更改为iso-8859-1不支持的字符的不同表示形式(= &&;🚲)适用。