Meu primeiro palpite, ao lidar com nomes de caminho UTF8, é tentar usar a biblioteca zipfile do Python - Acredito que sua plataforma cruzada seja suficiente para suas necessidades (OTOH, os documentos do módulo não mencionam nada sobre UTF8 ...) .
Aqui está um pequeno script para tentar isso:
#!/usr/bin/python
import zipfile
import sys
import os
if len(sys.argv) < 2:
print "I require a file name and a directory to unzip to"
sys.exit()
zip = zipfile.ZipFile(sys.argv[1])
if not os.path.exists(sys.argv[2]):
os.mkdir(sys.argv[2])
zip.extractall(sys.argv[2])
Isso pode ser chmod +x
'd e executado - veja se funciona no seu caso.
Em toda a improbabilidade infinita, isso resolverá seu problema.