python — декодировать utf-8 в tarfile

У меня есть tar-файл, который содержит многобайтовые символы (японский). Я использую libarchive, чтобы распаковать файл. Имена файлов внутри файлов tar кодируются с использованием utf-8. Когда я пытаюсь распаковать файл, результат всегда теряет многобайтовые символы.

Я написал скрипт на Python для достижения моего результата, который работал

#!/usr/bin/python27

import tarfile
import pdb
def transform(data):
u = data.decode('utf8')
pdb.set_trace()
#return u.encode('utf8')
return u

tar = tarfile.open('abc.tar')
for m in tar.getmembers():
print m.name
m.name = transform(m.name)
#print m.name

tar.extractall()

Однако я хочу добиться того же в c ++. Это фрагмент кода cpp

while (entry = tar_file->nextEntry()) {
fs::path filepath = path / entry->getFileName();  // loose the utf-8 character s here
// So I tried the following
int wchars_num =  MultiByteToWideChar( CP_ACP , 0 , filepath.string().c_str() , -1, NULL , 0 );
wchar_t* wstr = new wchar_t[wchars_num];

//I tried UTF-8 as well in place of CP_ACP
MultiByteToWideChar( CP_ACP , 0 , filepath.string().c_str() , -1, wstr , wchars_num );
// But this did not help

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]