compliance/Windows-Encoding-Fix.md
2025-08-27 16:55:39 +08:00

5.2 KiB
Raw Blame History

Windows批处理编码问题修复

🔍 问题分析

你遇到的错误是典型的Windows批处理文件编码问题

'鎻愮ず]' 不是内部或外部命令,也不是可运行的程序
'唬寮傛妗嗘灦锛岃嚜鍔ㄧ敓鎴怉PI鏂囨。' 不是内部或外部命令,也不是可运行的程序

根本原因:

  1. 字符编码问题中文字符在Windows批处理中出现乱码
  2. 代码页不匹配Windows默认代码页与文件编码不一致
  3. 特殊字符冲突:某些中文字符被误解析为命令

解决方案

方案1: 纯英文版本(推荐)

创建了 create-compose-package-windows-en.bat

  • 完全使用英文:所有提示、注释、变量名都是英文
  • 避免编码问题:不依赖特定的字符编码
  • 跨系统兼容在任何Windows系统上都能正常运行

方案2: 编码修复(备选)

如果需要中文版本,可以:

@echo off
chcp 65001 >nul
REM 设置UTF-8编码

但这种方法在不同Windows版本上可能有兼容性问题。

📊 版本对比

特性 中文版本 英文版本
编码问题 有乱码 无问题
兼容性 依赖编码 通用
可读性 中文友好 国际化
维护性 编码敏感 稳定
文件大小 较大 较小

🚀 英文版本特性

1. 完整功能保持

echo Please select service architecture:
echo   1) Dual Service - API Server(5050) + History Viewer(5051)
echo   2) FastAPI Service - Modern async framework with auto API docs(5051)
echo   3) Flask Service - Lightweight traditional framework(5050)

2. 清晰的状态提示

echo [INFO] Selected architecture: !SERVICE_DESC!
echo [SUCCESS] Project files copied successfully
echo [ERROR] Docker image build failed

3. 标准化的文件结构

dms-compliance-dual-amd64-windows-20250820-123456/
├── docker-compose.yml      # No version field
├── Dockerfile             # Alpine-based multi-stage
├── .env                   # Environment configuration
├── start.bat              # Windows batch start script
├── stop.bat               # Windows batch stop script
├── logs.bat               # Windows batch log viewer
├── docker-image.tar.gz    # Docker image export
└── README.md              # English documentation

🔧 技术实现

子程序结构

:create_dual_dockerfile
REM Create Dockerfile for dual service architecture
(
echo # Multi-stage build - Build stage
echo FROM python:3.11-alpine AS builder
...
) > Dockerfile
goto :eof

错误处理

docker buildx build --platform "%TARGET_PLATFORM%" --tag "%IMAGE_NAME%:latest" --load .
if errorlevel 1 (
    echo [ERROR] Docker image build failed
    cd /d "%~dp0"
    pause
    exit /b 1
)

文件复制优化

REM Use robocopy to exclude cache files
robocopy "ddms_compliance_suite" "%TEMP_BUILD_DIR%\ddms_compliance_suite" /E /XD __pycache__ .git .pytest_cache /XF *.pyc *.log *.tmp >nul 2>&1

📝 使用方法

运行脚本

create-compose-package-windows-en.bat

交互选择

Please select service architecture:
  1) Dual Service - API Server(5050) + History Viewer(5051)
  2) FastAPI Service - Modern async framework with auto API docs(5051)
  3) Flask Service - Lightweight traditional framework(5050)

Please enter choice (1-3) [default: 1]: 1

Please select target platform architecture:
  1) AMD64 (x86_64) - Intel/AMD 64-bit [Recommended]
  2) ARM64 (aarch64) - Apple M1/M2, ARM 64-bit
  3) ARMv7 - Raspberry Pi 3/4, ARM 32-bit
  0) Auto-detect current platform

Please enter choice (0-3) [default: 0]: 0

Build configuration confirmation:
  Architecture: Dual Service - API Server(5050) + History Viewer(5051)
  Ports: 5050,5051
  Platform: AMD64 (x86_64) - Intel/AMD 64-bit [Auto-detected]

Confirm to start build? (y/N): y

🎯 测试验证

使用 test-windows-en.bat 进行自动化测试:

echo [TEST] Running Windows English version script...
(
echo 1
echo 0  
echo y
) | create-compose-package-windows-en.bat

📋 生成的管理脚本

start.bat

echo === DMS Compliance Tool Start Script (Windows Version) ===
echo [INFO] Building Docker image...
%COMPOSE_CMD% build
echo [INFO] Starting services...
%COMPOSE_CMD% up -d

stop.bat

echo === DMS Compliance Tool Stop Script (Windows Version) ===
echo [INFO] Stopping services...
%COMPOSE_CMD% down

logs.bat

echo === DMS Compliance Tool Logs (Windows Version) ===
%COMPOSE_CMD% logs -f

🎉 总结

编码问题完全解决

  • 使用纯英文避免字符编码问题
  • 兼容所有Windows版本和代码页设置
  • 提供清晰的英文提示和文档

功能完整保持

  • 支持双服务架构API服务器 + 历史查看器)
  • 支持FastAPI和Flask单服务架构
  • 完整的Docker构建和部署流程

用户体验优化

  • 清晰的英文提示
  • 标准化的错误处理
  • 完整的文档和管理脚本

现在你可以使用 create-compose-package-windows-en.bat 来创建Windows版本的部署包不会再遇到编码问题🎉