加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – Git:Diff不处理UTF-8以外的字符编码?

发布时间:2020-12-14 02:51:20 所属栏目:Windows 来源:网络整理
导读:创建了一个repo,添加了包含以下内容的UTF8和Latin2编码文件: árvízt?r? tük?rfúrógépáRVíZT?R? TüK?RFúRóGéP 见https://github.com/bimlas/git-test/commit/872370caf91f1faaf931c1228c797f3d10d6435d git log -p 82904e60的输出是: commit 82
创建了一个repo,添加了包含以下内容的UTF8和Latin2编码文件:

árvízt?r? tük?rfúrógép
áRVíZT?R? TüK?RFúRóGéP

见https://github.com/bimlas/git-test/commit/872370caf91f1faaf931c1228c797f3d10d6435d

git log -p 82904e60的输出是:

commit 82904e60d1940c036c8190e2a41de6b423727a7c
Author: BimbaLaszlo <bimbalaszlo@gmail.com>
Date:   Mon Jul 27 14:38:35 2015 +0200

    initial commit

diff --git a/fileencoding/latin2.txt b/fileencoding/latin2.txt
new file mode 100644
index 0000000..7165bc9
--- /dev/null
+++ b/fileencoding/latin2.txt
@@ -0,0 +1,2 @@
+<E1>rv<ED>zt<FB>r<F5> t<FC>k<F6>rf<FA>r<F3>g<E9>p^M
+<C1>RV<CD>ZT<DB>R<D5> T<DC>K<D6>RF<DA>R<D3>G<C9>P^M
diff --git a/fileencoding/utf8.txt b/fileencoding/utf8.txt
new file mode 100644
index 0000000..80e1878
--- /dev/null
+++ b/fileencoding/utf8.txt
@@ -0,2 @@
+árvízt?r? tük?rfúrógép^M
+áRVíZT?R? TüK?RFúRóGéP^M

我在Linux和Windows(我的语言环境是Latin2)上输出相同的输出.没有寻呼机(git –no-pager log -p 82904e60)尝试,没有转义码得到相同的结果:

commit 82904e6
Author: BimbaLaszlo <bimbalaszlo@gmail.com>
Date:   2015-07-27 14:38:35 +0200

    initial commit

diff --git a/fileencoding/latin2.txt b/fileencoding/latin2.txt
new file mode 100644
index 0000000..7165bc9
--- /dev/null
+++ b/fileencoding/latin2.txt
@@ -0,2 @@
+?rv?zt?r? t?k?rf?r?g?p
+?RV?ZT?R? T?K?RF?R?G?P
diff --git a/fileencoding/utf8.txt b/fileencoding/utf8.txt
new file mode 100644
index 0000000..80e1878
--- /dev/null
+++ b/fileencoding/utf8.txt
@@ -0,2 @@
+árvízt?r? tük?rfúrógép
+áRVíZT?R? TüK?RFúRóGéP

latin2.txt的日志是相同的,因此问题不是由一个输出中不同编码文件的混合引起的.

如何设置Git来打印即使没有寻呼机也应该出现的字符?

编辑

我认为问题与终端无关,例如在Windows PowerShell上,latin2.txt很好,但是utf8.txt很奇怪:

Same encoding with different output

解决方法

Git根本不关心字符编码.一个文件只是一堆字节.

显示由您的终端完成.如果将其配置为以UTF-8解码,则您的latin-2文件似乎已损坏.如果将其配置为解码为latin-2,则UTF-8文件似乎已损坏.

也许编码属性(参见git help gitattributes)能够给一些工具提示如何正确解码文件,但我从未使用过这个.例如,github可能足够聪明,可以查看此属性并以不同方式解码这些文件.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读