#!/usr/bin/env python3
"""
控制台输出辅助模块 - 处理Windows编码问题
"""
import sys
import os

# 设置环境变量
os.environ['PYTHONIOENCODING'] = 'utf-8'

# 尝试设置控制台编码
try:
    import ctypes
    kernel32 = ctypes.windll.kernel32
    kernel32.SetConsoleOutputCP(65001)  # UTF-8
    kernel32.SetConsoleCP(65001)
except:
    pass

# 重新定义stdout/stderr
if sys.platform == 'win32':
    try:
        import io
        sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace')
        sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8', errors='replace')
    except:
        pass

def safe_print(text, *args, **kwargs):
    """安全打印函数，处理编码问题"""
    try:
        print(text, *args, **kwargs)
    except UnicodeEncodeError:
        # 如果UTF-8失败，尝试GBK
        try:
            encoded = text.encode('gbk', errors='replace').decode('gbk')
            print(encoded, *args, **kwargs)
        except:
            # 最后尝试ASCII
            print(text.encode('ascii', errors='replace').decode('ascii'), *args, **kwargs)

def print_header(title):
    """打印标题"""
    safe_print("=" * 60)
    safe_print(title)
    safe_print("=" * 60)

def print_step(step_num, total, message):
    """打印步骤信息"""
    safe_print(f"[{step_num}/{total}] {message}")

def print_info(label, value):
    """打印信息行"""
    safe_print(f"      {label}: {value}")

def print_success():
    """打印成功信息"""
    safe_print("      [OK] 成功")

def print_fail():
    """打印失败信息"""
    safe_print("      [FAIL] 失败")

def print_done():
    """打印完成信息"""
    safe_print("=" * 60)
    safe_print("完成!")
    safe_print("=" * 60)
