git->处理 - > git往返文本编码

时间:2010-06-22 06:54:19

标签: .net character-encoding processstartinfo

我正在尝试编写一个实用程序来将代码从我们的自定义源代码控制迁移到git。

旧系统中的'commit'消息被逐步添加到项目路径中的文本文件中,因此我使用git将这些文件从一个版本区分到另一个版本,然后使用该diff作为提交消息。

不出所料,我的口音有问题。

测试字符串为:éèàçüûöôëê

  1. 源文本文件是(因此记事本告诉我)'ANSI'。
  2. 如果我在msysgit中做差异,我会看到<E9><E8><E0><E7><FC><FB><F6><F4><EB><EA>
  3. 当我使用相同的diff命令运行对git的Process调用时(请参阅this问题),我得到:
    1. ÚÞÓþ³¹÷¶ÙÛ
    2. {li> ���������� StandardOutputEncoding = Encoding.UTF8,每this个问题。
    3. éèàçüûöôëêStandardOutputEncoding = Encoding.Default
  4. 到目前为止,很好,但如果我将éèàçüûöôëê作为提交消息发回,git会告诉我Warning: commit message does not conform to UTF-8.

    有关如何使其工作的任何指示? This question也讨论了在StandardInput上设置编码,但我的提交消息在参数中,而不是输入的一部分。

    (Git还说我可以设置配置变量i18n.commitencoding,但如果可以,我宁愿尊重git格式。

1 个答案:

答案 0 :(得分:0)

看起来它与.net或Process无关,甚至可能与git无关。据我所知,无论如何都无法在bash中输入重音符号。

尽管git发出了警告,但其他工具(gitk)可以读取提交消息,所以一切都很好。