相关疑难解决方法(0)

git,msysgit,accents,utf-8,最终答案

我在某些地方读过git(或只是msysgit?)和字符编码有问题- 我相信这只是文件名中的一个问题.

我想要的是一些'权威'(或至少权威)的信息:

  1. 究竟是什么'问题'?(症状)
  2. 原因是什么?(简要)
  3. 在什么情况下这是一个节目塞子?
  4. 是否有任何解决方案,或没有任何解决方法?

我希望这个问题不是太模糊,我认为将所有这些信息放在一个地方以便能够指出人们是很好的...

git utf-8 msysgit

45
推荐指数
1
解决办法
2万
查看次数

在Windows上的Python 2.x中从命令行参数中读取Unicode字符

我希望我的Python脚本能够在Windows中读取Unicode命令行参数.但似乎sys.argv是以某种本地编码而不是Unicode编码的字符串.如何以完整的Unicode读取命令行?

示例代码: argv.py

import sys

first_arg = sys.argv[1]
print first_arg
print type(first_arg)
print first_arg.encode("hex")
print open(first_arg)
Run Code Online (Sandbox Code Playgroud)

在我为日语代码页设置的PC上,我得到:

C:\temp>argv.py "PC???????08.09.24.doc"
PC???????08.09.24.doc
<type 'str'>
50438145835c83748367905c90bf8f9130382e30392e32342e646f63
<open file 'PC???????08.09.24.doc', mode 'r' at 0x00917D90>
Run Code Online (Sandbox Code Playgroud)

这是我认为的Shift-JIS编码,并且它"适用于"该文件名.但它打破了文件名,其中的字符不在Shift-JIS字符集中 - 最终的"打开"调用失败:

C:\temp>argv.py Jörgen.txt
Jorgen.txt
<type 'str'>
4a6f7267656e2e747874
Traceback (most recent call last):
  File "C:\temp\argv.py", line 7,
in <module>
    print open(first_arg)
IOError: [Errno 2] No such file or directory: 'Jorgen.txt'
Run Code Online (Sandbox Code Playgroud)

注意 - 我在谈论Python 2.x,而不是Python 3.0.我发现Python 3.0提供sys.argv了正确的Unicode.但是转换到Python 3.0还有点早(由于缺乏第三方库支持).

更新:

一些答案说我应该根据sys.argv编码的内容进行解码.问题在于它不是完整的Unicode,因此某些字符不可表示.

这是让我感到悲伤的用例:我已经在Windows资源管理器中将文件拖放到.py文件中.我有各种字符的文件名,包括一些不在系统默认代码页中的字符.在所有情况下,当在当前代码页编码中无法表示字符时,我的Python脚本无法通过sys.argv获取正确的Unicode文件名.

肯定有一些Windows API用完整的Unicode读取命令行(而Python 3.0就是这样).我假设Python …

python windows unicode command-line python-2.x

29
推荐指数
2
解决办法
2万
查看次数

SVN可以做什么,Git不能?

我目前Git在掌握之前已经深入了解SVN.这是我第一次认真的源控制管理系统学习体验.

我想知道不学习的机会成本(甚至是去学习我学到的东西)SVN.有什么我需要注意的吗?

是否存在与之Git相比不可行或难以忍受的事情SVN

svn git

20
推荐指数
5
解决办法
4100
查看次数

GIT:不处理包含unicode char的文件名(例如中文/韩文)

问题:

  • 在GIT中使用ls会将文件名中的所有unicode显示为"?" (即???.mp3).
  • 当使用git add -A时,会返回以下错误:"fatal:无法统计'example/???.mp3':没有这样的文件或目录"

这个问题有方法解决吗?

谢谢.

windows git git-svn unicode-string msysgit

10
推荐指数
2
解决办法
3448
查看次数

windows mercurial 2.5(或将来)上的unicode文件名

首先,我知道Mercurial:Windows和Linux之间的文件名中的非ascii字母问题以及DVCS支持的Unicode文件名是什么?.但它们已经陈旧,并不适用于最新版本的mercurial.

他们都提到FixUtf8扩展 -这确实不是与善变的最新版本(2.3.1写这篇文章的)工作,显然是因为善变2.0没有奏效.事实上,启用该扩展将阻止您添加任何文件,甚至是简单的"vanilla"ascii文件名.FixUtf8Extension似乎已被放弃 - 它的最后一次提交是在2010年.

到目前为止,我一直是一个快乐的善变用户,但我现在正处于一个国际项目中,对非ascii文件名的支持至关重要.如果无法在mercurial中解决这个问题,我将不得不考虑备用版本控制系统.

在Windows上最新版本的mercurial是否支持unicode文件名?

mercurial

8
推荐指数
1
解决办法
1673
查看次数