2025 開年第一天就踩雷,耗了快二十分鐘才找出問題,筆記留念。

問題出在我明明在 .gitignore 寫了 .venv,Git 怎麼就是無視我的設定,硬要把 Python .venv 虛擬環境目錄包進版控。

起初以為會不會是檔名打錯字之類的低級問題,睜大眼睛看到眼眶都痛了都沒看出端倪。而在 VSCode 按 Add to .gitignore 也能正確加入項目,也證明檔名沒問題。

試了很久,終於發現問題所在:

我的這個 .gitignore 是在 VSCode PowerShell Terminal 用 echo .venv > .gitignore 做出來的,這裡犯了一個錯,在 PowerShell 5.1 使用 > 導向,預設會用 UTF-16LE (UCS-2 LE),不是 UTF-8,這個雷之前踩過,且一不留神就會踩了又踩。 參考:PowerShell 輸出結果編碼問題

PowerShell 6+ (pwsh) 起預設編碼已改成 UTF-8,預估比較不會再有類似問題。(如下例,對照 "echo HELLO > d:\file-name.txt" 在 PowerShell 與 pwsh 執行結果大不同)

總之,歷經這次刻骨銘心的經驗,我以後應該不會再忘記惹...


Comments

# by 小黑

這也太雷了

# by yoyo

Windows下因預設編碼不是UTF-8有滿多問題的, Linux統一都用UTF-8 避免這些問題

Post a comment