import os

def fix_encoding(text):
    try:
        # Пытаемся превратить крякозябры обратно в байты и декодировать правильно
        return text.encode('cp1251').decode('utf-8')
    except:
        return text

for root, dirs, files in os.walk(".", topdown=False):
    # Сначала переименовываем файлы
    for name in files:
        new_name = fix_encoding(name)
        if new_name != name:
            os.rename(os.path.join(root, name), os.path.join(root, new_name))
            print(f"Fixed: {new_name}")

    # Затем переименовываем папки
    for name in dirs:
        new_name = fix_encoding(name)
        if new_name != name:
            os.rename(os.path.join(root, name), os.path.join(root, new_name))
            print(f"Folder fixed: {new_name}")
