Python と Windows の地雷

複数プロジェクトで踏んだ、Windows 由来の罠。

  • ファイル入出力に encoding="utf-8" を明示:省略すると Windows 既定が cp932 になり、日本語を含む JSON/テキストで UnicodeDecodeError。読み書き両方で指定する(gemini-rag)。
  • SetForegroundWindow は他プロセスの窓を前面化できない:OS レベルの制限で、別アプリのウィンドウを プログラムからアクティブにするのは基本拒否される。AttachThreadInput でスレッドをアタッチする回避策は あるが、他ウィンドウへの意図しない副作用リスクがあり安易に使えない(mouse-release の F8 再拘束が 不安定なのはこれが根本原因・未解決)。

出典:gemini-rag(encoding)、mouse-release(SetForegroundWindow)