Skip to main content
 首页 » 编程设计

android之Ubuntu 13.04 上的 repo init UnicodeDecodeError

2025年05月04日45pander-it

我使用 repo-1.19 :

$ wget -nv 'http://code.google.com/p/git-repo/downloads/detail?name=repo-1.19' 
2013-08-05 02:36:32 URL:http://code.google.com/p/git-repo/downloads/detail?name=repo-1.19 [9673] -> "detail?name=repo-1.19.3" [1] 
$ chmod +x repo-1.19  
$ ./repo-1.19 --version 
repo version v1.12.2 
       (from https://gerrit.googlesource.com/git-repo) 
repo launcher version 1.19 
       (from /home/u/Téléchargements/repo-1.19) 
git version 1.8.1.2 
Python 2.7.4 (default, Jul  5 2013, 08:21:57)  
[GCC 4.7.3] 

但是当我尝试初始化它时,我遇到了 Python UnicodeDecodeError:

$ rm -rf .repo 
$ ./repo-1.19 init -u git://github.com/CyanogenMod/android.git -b cm-10.2 
Get https://gerrit.googlesource.com/git-repo 
remote: Counting objects: 101, done 
remote: Finding sources: 100% (101/101) 
remote: Total 2533 (delta 1442), reused 2533 (delta 1442) 
Receiving objects: 100% (2533/2533), 1.71 MiB | 1.80 MiB/s, done. 
Resolving deltas: 100% (1442/1442), done. 
From https://gerrit.googlesource.com/git-repo 
 * [new branch]      maint      -> origin/maint 
 * [new branch]      master     -> origin/master 
 * [new branch]      stable     -> origin/stable 
 * [new tag]         v1.0       -> v1.0 
 [... lines removed ...] 
 * [new tag]         v1.9.6     -> v1.9.6 
Get git://github.com/CyanogenMod/android.git 
Traceback (most recent call last): 
  File "/home/u/Téléchargements/.repo/repo/main.py", line 414, in <module> 
    _Main(sys.argv[1:]) 
  File "/home/u/Téléchargements/.repo/repo/main.py", line 390, in _Main 
    result = repo._Run(argv) or 0 
  File "/home/u/Téléchargements/.repo/repo/main.py", line 138, in _Run 
    result = cmd.Execute(copts, cargs) 
  File "/home/u/Téléchargements/.repo/repo/subcmds/init.py", line 347, in Execute 
    self._SyncManifest(opt) 
  File "/home/u/Téléchargements/.repo/repo/subcmds/init.py", line 137, in _SyncManifest 
    m._InitGitDir() 
  File "/home/u/Téléchargements/.repo/repo/project.py", line 1847, in _InitGitDir 
    self.bare_git.init() 
  File "/home/u/Téléchargements/.repo/repo/project.py", line 2197, in runner 
    capture_stderr = True) 
  File "/home/u/Téléchargements/.repo/repo/git_command.py", line 167, in __init__ 
    _setenv(env, GIT_DIR, gitdir) 
  File "/home/u/Téléchargements/.repo/repo/git_command.py", line 120, in _setenv 
    env[name] = value.encode() 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 9: ordinal not in range(128) 

我听从了以下建议:

我尝试了很多很多可能性,但没有成功:

./repo-1.19 init -u   git://android.git.kernel.org/platform/manifest.git -b android-4.3_r2 
./repo-1.19 init -u https://android.git.kernel.org/platform/manifest.git -b android-4.3_r2 
./repo-1.19 init -u git://android.googlesource.com/platform/manifest 

我的错误在哪里?

请您参考如下方法:

错误是指您正在使用的路径:

  File "/home/u/Téléchargements/.repo/repo/git_command.py", line 120, in _setenv 
    env[name] = value.encode() 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 9: ordinal not in range(128) 

位置 9 中的 0xc3 是 /home/u/Téléchargements 的 'é'。这似乎是 repo 中的错误,但您很可能可以通过使用仅包含 ASCII 字符的目录名称来解决它。

在 git_command.py 中:

def _setenv(env, name, value): 
  env[name] = value.encode() 

对于 Python 2,这会尝试将值编码为 US-ASCII,但失败了。它可能应该是:

def _setenv(env, name, value): 
  env[name] = value.encode(sys.getfilesystemencoding()) 

(另见 Setting the correct encoding when piping stdout in Python)。