首先强调一下,如果代码的中文已经变成”锟斤拷“了的话,本文中的方法无法帮助你恢复。为此我表示十分抱歉。但是本文提供了避免代码锟斤拷的方法,希望能够帮到你。
本文仅仅介绍了”锟斤拷“的形成和避免方法。但是如果你的代码中的中文只是变为了“�”,那希望本文提供的思路可以帮助到你。如果你有其他想法或者更好的方法,欢迎在评论区中提出,我们一起来讨论。
其实这个问题困扰我老久了,因为一直来使用git可视化软件合并的时候,时不时就会出现这个问题。之前也没有深究,只知道是编码问题,偶尔合并下如果变成了锟斤拷就手动修复一下。但是最近的项目因为需求迭代速度快(就是老是改需求),所以合并的次数会比较多,所以还是解决下吧。
形成原因
中文变成锟斤拷的原因不是很复杂。我现在用的IDE设置的默认编码格式是GB2312,是国内常用的中文编码格式。因此,我在这里创建保存的文件都是使用GB2312编码的。
但是在git中,使用的却是utf-8。所以,在这里查看文件,中文字符就会变成“�”。这是由于utf-8中没有对应编码的字符,于是默认使用了“�”替代未知字符(当然也有时候utf-8正好有对应编码的符号,所以可以看到除了问号,还会有一些其他符号出现)。当我使用它保存文件的时候,代码里面的中文就真的变成了“�”。
这时候如果重新用IDE打开,IDE还是以GB2312的编码格式打开,那连续的“�”就会变成我们常见的锟斤拷锟斤拷。
一开始我以为是我使用的GitKraken是不支持中文编码的。但是在翻看其他代码的时候,我发现有些居然是可以正常的显示中文。于是确定了,它是支持中文编码的。
解决方法
对于已经变成锟斤拷的代码,确实不知道有什么方法,我都是手动修复的(如果各位大佬有什么好方法的话可以推荐一下)。但是,对于没有变成锟斤拷的代码,只要将编码格式换成utf-8,那后面再用git合并也不会锟斤拷了。这里我选择使用VSCode重新保存,当然这里只要能将编码转成utf-8,用什么软件转都可以。
首先需要使用文件实际的编码将文件打开(比如在我当前的场景下我使用的编码是GB2312,我需要先将文件用GB2312打开)
(如果你也是用VSCode,可以点击右下角这个文件编码格式,这里不一定是utf-8)
选择【通过编码重新打开】
我这里按照我的情况选择【GB2312】,你需要对应自己的情况。一般VSCode通过内容猜测的选项就是可以的了,但是并不确定。
此时正常来说,你的文章中的中文应该会恢复正常显示。
然后再次选择右下角刚刚那个编码模式,选择【通过编码保存】并选择【utf-8】即可。
这时候GitKraken里面已经正常显示代码中的中文注释了。(我试了一下Sourcetree里面也是一样的)
但是这个时候有可能IDE这边会变成乱码(也有可能不会),但是没有关系,把IDE这边也改为utf-8编码就可以了。
(虽然说utf-8编码文件会更大,不过为了避免以后还会出现锟斤拷,我已经将项目下所有文件的编码格式都改成utf-8了)