在utf8中使用git clone而不是us-ascii

时间:2016-08-31 14:35:37

标签: git github encoding utf-8 ascii

当我从GitHub运行git clone SOMEREPO时,收到的文件位于us-ascii

$ file -bi index.php text/plain; charset=us-ascii

如何在utf8中收到它们?

由于

2 个答案:

答案 0 :(得分:1)

git clone将在存储库中“按原样”检索文件。如果你想使用uf8,你必须转换它们。

在根文件夹中运行该脚本,然后提交更改。请注意,git有时不会检测编码更改。

wizard.staff = wizard.addChild(staff);
wizard.staff.kill()

如果您的编辑器在us-ascii中编码您的文件,您可以更改它。如果没有,那么在每次提交之前都有让git在utf8中对你的文件进行编码的解决方案。

对于那部分,您可以在这里查看:https://stackoverflow.com/a/11053818/3445619

答案 1 :(得分:0)

有两种方法可以检测到文件为utf-8:隐式或显式。以隐式形式,您必须查看内容并尝试猜测:请记住utf-8是ASC-II的超集,因此,如果您实际上在特定文件中不使用任何utf-8特殊字符,则无法以区分是UTF-8还是ASC-II,因此猜测工具将采用ASC-II。

以显式形式,在文件开始处有一个BOM(字节顺序标记),告知它是供UTF-8使用的。这是从USC-2 / UTF-16的背景中借来的,因为在此需要告知编码和字节顺序。在UTF-8中,没有字节顺序(或者,如果您愿意,也可以是不可知的)。

隐式形式是Linux和几乎每个与utf-8兼容的系统中常用的形式,不建议使用显式形式。 Windows是一个例外(通常),在Windows中,大多数编辑者只能猜测是否有BOM,因为utf-8并不完全受本机支持(因为通常的形式是代码页或UCS-2,而向UTF-16的进展缓慢, UCS-2是前者的一个较差的子集,缺少正确的每个字符超过2个字节的合规性。

如果要让特定工具采用utf-8而不是ASC-II,则可能必须提供BOM(显式表单)或对其进行配置,甚至进行更改。即apache http服务器可以通过查看文件内容来假定asc-ii,但是您可以覆盖设置以使其无条件报告utf-8(或相反)。