#!/usr/bin/env python3 """ Quick Unicode Fix für MYP Backend ================================= Behebt Unicode-Encoding-Probleme in logging_config.py für Windows CP1252-Umgebungen. Verwendung: python quick_unicode_fix.py """ import os import re from pathlib import Path def fix_unicode_in_file(file_path: Path): """Ersetzt Unicode-Emojis durch ASCII-Text in einer Datei""" print(f"🔧 Bearbeite: {file_path}") # Emoji-Ersetzungen definieren replacements = { '\\u2705': '[OK]', # ✅ -> [OK] '\\u274c': '[ERROR]', # ❌ -> [ERROR] '\\u26a0': '[WARN]', # ⚠️ -> [WARN] '\\u2139': '[INFO]', # ℹ️ -> [INFO] '✅': '[OK]', '❌': '[ERROR]', '⚠️': '[WARN]', 'ℹ️': '[INFO]', # Weitere häufige Emojis '🚀': '[START]', '🔄': '[RESTART]', '📋': '[LIST]', '🎉': '[SUCCESS]', '💥': '[CRASH]', '🔍': '[SEARCH]', '📊': '[STATS]', '🛑': '[STOP]', '⏭️': '[SKIP]', '🚨': '[ALERT]', } try: # Datei lesen with open(file_path, 'r', encoding='utf-8') as f: content = f.read() original_content = content changes_made = 0 # Ersetzungen durchführen for emoji, replacement in replacements.items(): if emoji in content: content = content.replace(emoji, replacement) changes_made += 1 print(f" ✓ Ersetzt: {emoji} -> {replacement}") # UTF-8 Encoding-Zwang hinzufügen (falls nicht vorhanden) encoding_fix = """ # UTF-8 Encoding für Windows-Kompatibilität import sys if hasattr(sys.stdout, 'reconfigure'): try: sys.stdout.reconfigure(encoding='utf-8') except: pass """ if "sys.stdout.reconfigure" not in content: # Füge nach den Imports ein import_pattern = r'(import\s+.*?\n)(\n*)(class|def|\w+\s*=)' if re.search(import_pattern, content, re.MULTILINE): content = re.sub( import_pattern, r'\1' + encoding_fix + r'\n\3', content, count=1, flags=re.MULTILINE ) changes_made += 1 print(f" ✓ UTF-8 Encoding-Fix hinzugefügt") # Datei schreiben (nur wenn Änderungen) if changes_made > 0: # Backup erstellen backup_path = file_path.with_suffix(f'{file_path.suffix}.backup') with open(backup_path, 'w', encoding='utf-8') as f: f.write(original_content) print(f" 📂 Backup erstellt: {backup_path}") # Geänderte Datei schreiben with open(file_path, 'w', encoding='utf-8') as f: f.write(content) print(f" ✅ {changes_made} Änderungen gespeichert") else: print(f" ℹ️ Keine Änderungen erforderlich") return changes_made except Exception as e: print(f" ❌ Fehler bei {file_path}: {e}") return 0 def main(): """Hauptfunktion - führt Unicode-Fix durch""" print("🚀 MYP Backend Unicode-Fix") print("=" * 50) backend_dir = Path(__file__).parent files_to_fix = [ backend_dir / "utils" / "logging_config.py", backend_dir / "app_cleaned.py", backend_dir / "app.py", ] total_changes = 0 fixed_files = 0 for file_path in files_to_fix: if file_path.exists(): changes = fix_unicode_in_file(file_path) total_changes += changes if changes > 0: fixed_files += 1 else: print(f"⚠️ Datei nicht gefunden: {file_path}") print("\n" + "=" * 50) print("📊 ZUSAMMENFASSUNG") print("=" * 50) print(f"✅ Bearbeitete Dateien: {len([f for f in files_to_fix if f.exists()])}") print(f"🔧 Dateien mit Änderungen: {fixed_files}") print(f"📝 Gesamte Änderungen: {total_changes}") if total_changes > 0: print(f"\n🎉 Unicode-Fix erfolgreich angewendet!") print(f"💡 Teste jetzt: python -c \"import app_cleaned\"") else: print(f"\nℹ️ Keine Unicode-Probleme gefunden.") print("\n🔄 Für Systemweite UTF-8-Unterstützung:") print(" set PYTHONIOENCODING=utf-8") if __name__ == "__main__": main()