【问题标题】:Mercurial commit messages and log, what encoding is supported, does Hg care at all?Mercurial提交消息和日志,支持什么编码,Hg在乎吗?
【发布时间】:2010-12-01 20:54:23
【问题描述】:

我尝试通过我的 Mercurial 包装库进行简单的提交,使用 Unicode:æøåÆØÅ 的简单文本作为我的提交消息。这将写入一个文本文件并使用适当的参数提供给 Mercurial:

hg commit --logfile FILE

如果我随后使用 TortoiseHg 查看存储库,则字符被正确复制。在控制台上,它们被破坏了:

[C:\Temp] :hg 日志 变更集:0:6a0911410128 标签: 小费 用户:Lasse V. Karlsen 日期:2010 年 12 月 1 日星期三 21:48:54 +0100 摘要:Unicode:├ª├╕├Ñ├å├ÿ├à

如果我将hg log 的输出重定向到一个文件并打开它,æøåÆØÅ 会正确复制。

所以,我的问题是:

  • 能否请hg直接将日志写入文件,还是必须重定向标准输出?
  • 这是否会导致控制台的 python 编码出现问题,即。某些字符会使hg 崩溃,而不仅仅是破坏输出?
  • 我应该遵守的提交消息是否有已知的受支持编码?

还是就这么简单:

  • Mercurial 不在乎,它获取我提供给它的文件的内容,无论内容是什么,并将其存储为提交消息。生成日志时,它只会将其转储回控制台,从而成为 Python 控制台输出库在这方面的任何限制的牺牲品?

【问题讨论】:

    标签: unicode mercurial


    【解决方案1】:

    以下可能无法解决问题,但可以帮助调试。

    签出:https://www.mercurial-scm.org/wiki/EncodingStrategy

    如果我将 hg log 的输出重定向到一个文件并打开它,æøåÆØÅ 会正确再现。

    所以至少 mercurial 正确地存储了提交信息。只是输出搞砸了。

    一些工作发生在这些方面,但与此无关

    [编辑:错过了您在 Windows 上的事实]

    如何处理字符集兼容性问题见最后一段:https://www.mercurial-scm.org/wiki/CharacterEncodingOnWindows

    上面写着:

    • 设置您的控制台代码页以匹配您的系统代码页
    • 用环境变量覆盖 Mercurial 的编码
      • 设置 HGENCODING 将覆盖检测到的系统字符集。
    • 使用命令行选项覆盖 Mercurial 的编码
      • 使用全局 --encoding 选项可让您在每个命令上设置首选编码。
    • 使用基于 GUI 的工具与 Mercurial 交互
      • 这也消除了这个问题,完全消除了那个讨厌的控制台。
    • 使用 Linux/UNIX 和 UTF-8
      • 这让比尔盖茨哭了。

    【讨论】:

    • 不适用:他使用的是 Windows (C:\Temp)。 @Lasse:你用的是什么控制台? (您的提示不是默认的命令提示符。)
    • 接受指挥,但这重要吗?我从 .net 生成程序,我假设(这很糟糕)它使用 cmd。明天会检查,现在睡前在我的 iPad 上阅读。
    • 另请注意,使用 PROMPT 命令可以更改命令提示符文本,如果这是您所接受的。
    • 我没有得到那个“比尔盖茨”的参考。 UTF-8 在 Windows 上和在其他地方一样是事实上的标准。记事本保存 UTF-8。我的编辑器保存 UTF-8。然后 Mercurial 进入并故意将其搞砸,以“避免让 BG 哭泣”并让 哭泣。
    • @romkyns “使用 Linux/UNIX 和 UTF-8”的解决方案会让比尔盖茨哭泣,而不是 UTF-8 本身。
    【解决方案2】:

    如果将 git bash 用于 hg 命令,您可以将 字符集 设置为 ISO-8859-1 以修复 hg 日志中令人讨厌的字符。

    为此,请通过单击 git bash 左上角的图标转到 git bash 选项 * 选择选项 * 选择文本 * 在底部将字符集设置为ISO-8859-1

    我知道这样做很痛苦,但它确实有效。

    【讨论】:

      猜你喜欢
      • 2011-03-21
      • 2012-05-04
      • 1970-01-01
      • 2012-05-09
      • 1970-01-01
      • 2010-09-23
      • 1970-01-01
      • 2012-01-01
      • 1970-01-01
      相关资源
      最近更新 更多