【问题标题】:Mercurial clone russian symbols like '?'Mercurial 克隆俄罗斯符号,如“?”
【发布时间】:2013-06-13 08:01:47
【问题描述】:

我在 PuTTy 的 Linux Red Hat 4.1.2-48 中工作,其中设置编码 UTF-8(PuTTy)。我安装了 mercurial 2.2.1 和他的存储库。在存储库编码集 UTF-8 的“hgrc”文件中,如:

[web]
allow_push = *
push_ssl = false
encoding = UTF-8

[diff]
git = True
ignorews = True
ignorewsamount = True
ignoreblanklines = True

在存储库中,我有文件,其名称采用 utf-8 编码,并带有俄语符号。当我转到存储库目录时,我看到正确的俄语符号。 Linux环境变量LANG=en_US.UTF-8..

如果我在 Windows 7 上克隆这个存储库,我有正确的俄罗斯符号,一切都很好。但是,如果我在那个 Linux 上克隆,所有的俄语符号都会变成“?”特点。当我执行命令file -bi 时,它说它是utf8。

任何人都可以帮助解决这个问题,以俄语字符是俄语或说出问题的方向吗?

【问题讨论】:

  • 如果它适用于 Windows 7 而不适用于 Linux,那么这听起来像是一个文件名编码问题 - 不同的平台对文件名使用不同的编码。有一个扩展 - mercurial.selenic.com/wiki/FixUtf8Extension 在这种情况下应该有所帮助
  • 谢谢,但我不明白。 “这个扩展更正了 Windows 上的文件名编码问题。”,但在 Windows 上一切都很好。 Linux 中的问题,更具体地说是 mercurial 克隆操作或 mercurial 配置中的问题。我认为是因为在 Windows 中一切都很好,而在 Linux 中则是问题。
  • 检查您的终端是否可以实际显示非罗马字符: echo -e "\xE2\x98\xA0" - 如果显示 ???那么这只是你终端的问题。
  • 我解决了。通过测试我发现,如果我通过 en_US.cp1251 设置 LANG 环境变量,克隆操作会给出带有正确俄罗斯符号的文件。我需要它,因为团队城市无法复制名称为“??...”的文件。所以我将构建参数设置为 LANG=en_US.cp1251 并且它获得了。

标签: linux encoding mercurial cyrillic


【解决方案1】:

windows和Linux之间的字符集问题,我遇到了类似的问题。对我来说,在 Linux 上一切正常,在 Windows 上不行。 CharacterEncodingOnWindows 对这个问题有洞察力。

【讨论】:

  • 你需要将你所引用的文章的相关内容粘贴到stackoverflow上。
猜你喜欢
  • 2010-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-24
  • 2017-12-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多