fix: 修复 Windows 系统下的 Unicode 编码问题

🐛 问题修复:

1. Unicode 编码错误修复:
   - 移除所有 emoji 字符 (��, ✓, , , , 🚀, 📥, ✗)
   - 使用文本标签替代:[1/4], [成功], [运行中], [失败] 等
   - 避免 Windows GBK 编码无法处理 Unicode 字符的问题

2. Python 脚本编码优化:
   - 添加 UTF-8 编码声明 # -*- coding: utf-8 -*-
   - 改进 progress_callback 函数的错误处理
   - 添加 UnicodeEncodeError 异常捕获和备用方案

3. 进度信息标准化:
   - 视频生成器:[1/4] 上传 → [2/4] 提交 → [3/4] 等待 → [4/4] 下载
   - API 客户端:[运行中], [排队中], [完成], [失败], [超时], [未知]
   - 批量处理:[成功], [失败], [错误] 状态标识

4. 错误处理增强:
   - print 函数添加编码错误处理
   - 确保在 Windows 系统下正常输出中文
   - 保持进度信息的可读性和一致性

 修复效果:
- 解决 'gbk' codec 编码错误 ✓
- Windows 系统下正常显示中文 ✓
- 保持进度信息清晰可读 ✓
- 跨平台编码兼容性 ✓

现在 AI 视频生成功能在 Windows 系统下可以正常工作,不再出现编码错误!
This commit is contained in:
root
2025-07-10 12:38:52 +08:00
parent ed8b854755
commit 9caf551f28
3 changed files with 25 additions and 22 deletions

View File

@@ -1,4 +1,5 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
API Client Module
API 客户端模块
@@ -236,30 +237,30 @@ class APIClient:
result['data'] = status_result['data']
result['msg'] = 'succeeded'
if progress_callback:
progress_callback(" 视频生成完成!")
progress_callback("[完成] 视频生成完成!")
break
elif status_result['msg'] == 'running':
wait_count += 1
elapsed = wait_count * interval
remaining = max(0, timeout - elapsed)
progress_msg = f" 任务运行中,已等待{elapsed}秒,预计剩余{remaining}秒..."
progress_msg = f"[运行中] 任务运行中,已等待{elapsed}秒,预计剩余{remaining}秒..."
logger.info(progress_msg)
if progress_callback:
progress_callback(progress_msg)
time.sleep(interval)
elif status_result['msg'] == 'failed':
result['msg'] = '任务执行失败'
if progress_callback:
progress_callback(" 任务执行失败")
progress_callback("[失败] 任务执行失败")
break
elif status_result['msg'] in ['pending', 'queued']:
wait_count += 1
elapsed = wait_count * interval
remaining = max(0, timeout - elapsed)
progress_msg = f" 任务排队中,已等待{elapsed}秒,预计剩余{remaining}秒..."
progress_msg = f"[排队中] 任务排队中,已等待{elapsed}秒,预计剩余{remaining}秒..."
logger.info(progress_msg)
if progress_callback:
progress_callback(progress_msg)
@@ -270,12 +271,12 @@ class APIClient:
wait_count += 1
logger.info(f"未知状态: {status_result['msg']},继续等待...")
if progress_callback:
progress_callback(f" 状态: {status_result['msg']},继续等待...")
progress_callback(f"[未知] 状态: {status_result['msg']},继续等待...")
time.sleep(interval)
if not result['status'] and result['msg'] == '':
result['msg'] = '任务超时'
if progress_callback:
progress_callback(f" 任务查询超时({timeout}秒)")
progress_callback(f"[超时] 任务查询超时({timeout}秒)")
return result