使用msysgit进行字符编码

时间:2011-06-23 09:49:05

标签: git encoding msysgit

在Win7框上读取时,在winXP框中创建的提交消息会生成警告。

我的名字包含特殊字符(ö),我想这是问题的根源,因为我的名字在提交中。 我在尝试隐藏在winXP上创建的提交上的更改时看到了这个问题: Warning: commit message does not conform to UTF-8.

我想检查一下使用什么编码来生成winXP上的提交,但找不到如何。

$ git config --get i18n.commitencoding 两台机器都返回空白。

http://www.kernel.org/pub/software/scm/git/docs/git-commit.html似乎说git会检查提交对象中的编码。

   git log,git show,git blame和   朋友们看看编码头   一个提交对象,并尝试重新编码   将日志消息转换为UTF-8,除非   否则指定。

那很好,但是为什么git会抱怨win7而不是winXP?


msysgit版本在两台机器上都是相同的:1.7.4.msysgit.0。

2 个答案:

答案 0 :(得分:0)

只是一个疯狂的猜测,但我最近在Rakefile中的某个人的名字中出现了类似的问题,我实际上不得不改变我的CMD环境的编码来运行它。

请看这个维基上的第二步:

https://github.com/NancyFx/Nancy/wiki/Having-trouble-with-rake%3F

chcp命令的Microsoft文档在这里: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/chcp.mspx?mfr=true

答案 1 :(得分:0)

现代Git(2019)更好地支持使用i18n.commitEncoding,但只有Git 2.25(2020年第一季度)提供了全面的支持:处理在{{1}期间使用非UTF-8编码的提交对象}”已得到改进。

请参见commit 52f52e5commit 5772b0c(2019年11月11日),commit b375744commit 019a9d8commit 0798d16commit e4b95b3commit 1ba6e7a (2019年11月8日)和commit 99b2ba3Doan Tran Cong Danh (congdanhqx-zz)(2019年11月7日)。
(由Junio C Hamano -- gitster --commit 6511cb3中合并,2019年12月1日)

  

sequencer:重新编码旧的合并提交消息

     

签名人:Doan Tran Cong Danh

     

在重新定基期间,旧合并的消息(以旧编码编码)将用作新合并提交的消息(由rebase创建)。

     

如果在旧合并时间之后rebase -i的值已更改。对于新合并,我们将收到一条不可用的消息。

     

更正它。


  

sequencer:重新编码为utf-8,然后安排重新定位的待办事项列表

     

签名人:Doan Tran Cong Danh

     

musl libc上,ISO-2022-JP编码器过于急切,无法切换回1字节编码,i18n.commitencoding的{​​{1}}总是在每个组合字符后切换回。
  比较此命令的musliconv的输出

glibc
     

尽管musl的输出并非最佳,但仍然正确。

     

来自commit 7d509878b8(“ pretty.c:具有截断方面$ sed q t/t3900/ISO-2022-JP.txt| iconv -f ISO-2022-JP -t utf-8 `|` iconv -f utf-8 -t ISO-2022-JP | xxd glibc: 00000000: 1b24 4224 4f24 6c24 5224 5b24 551b 2842 .$B$O$l$R$[$U.(B 00000010: 0a . musl: 00000000: 1b24 4224 4f1b 2842 1b24 4224 6c1b 2842 .$B$O.(B.$B$l.(B 00000010: 1b24 4224 521b 2842 1b24 4224 5b1b 2842 .$B$R.(B.$B$[.(B 00000020: 1b24 4224 551b 2842 0a .$B$U.(B. 的格式字符串”,2014-05-21,Git v2.1.0-rc0-merge中列出batch #3),我们首先将消息编码为utf-8,然后将其格式化并将其转换为git commit --squash上的实际输出编码。

     

因此,musl iconvlogOutputEncoding上失败。

     

在安排rebase的待办事项列表之前将其重新编码为utf-8。


  

configure.ac:必要时定义t3900::test_commit_autosquash_flags

     

签名人:Doan Tran Cong Danh

     

来自commit 79444c9294(“ musl libc:处理不为UTF-16编写BOM的系统”,2019-02-12,Git v2.21.0-rc1-merge batch #0中列出),我们将通过ICONV_OMITS_BOM支持这些系统,以省略BOM:

utf8
     

但是,没有教配置脚本来检测那些系统。

     

请教配置以执行此操作。