問題從「看不見的字符」開始
某個下午,我們的小型團隊在Mac mini上生成了業務數據文件,想將其傳遞給Windows裝置上的自動化機器人。當時想著「應該很簡單」。
但打開Windows上的文件時,混合了多語言的文本(韓文、英文)看起來是亂碼。特殊字符和空白也完全混亂。
同一個文件在Mac上看起來很清楚,但在Windows上卻顯示「???」,這就是問題所在。
Claude Code發現的真兇
我們向Claude Code解釋了狀況,並要求檢查文件編碼。
回應:
「Mac mini默認使用UTF-8編碼,但Windows環境會嘗試用UTF-16或本地編碼(韓文系統的情況下是EUC-KR)來讀取。轉換過程中某些字節被丟失了。」
解決方案(非開發者也能做到)
步驟1:用Python腳本重新編碼
import pandas as pd
# 讀取從Mac mini生成的UTF-8文件
df = pd.read_csv('data_from_mac.csv', encoding='utf-8')
# 添加UTF-8 BOM使Windows能穩定讀取
df.to_csv('data_for_windows.csv', encoding='utf-8-sig', index=False)
關鍵點: `utf-8-sig`會在文件開頭添加BOM(位元組順序標記),讓Windows自動識別。
步驟2:通過Google Sheets進行同步
不用CSV,而是用Google Sheets作為中間站點。
• Mac mini的自動化將數據寫入Google Sheets
• Windows裝置上的機器人通過Sheets API接收數據
• 不用擔心編碼問題(Google負責處理)
步驟3:驗證Windows裝置設定
將Windows文字輸入方式明確設為UTF-8:
# PowerShell(管理員權限)
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Nls\CodePage' -Name ACP -Value 65001
(需要重新啟動)
學到的東西
從非開發者的角度,「為什麼同樣的數據看起來不同?」令人沮喪。但背後隱藏著OS各自文字編碼的歷史差異。Mac(基於UNIX)和Windows的默認設置完全不同。
如果團隊經常移動數據,最安全的做法是使用中間媒介(Google Sheets、雲端數據庫)。
我們的團隊現在已經把標準改為Google Sheets + API組合,而不是直接傳輸CSV文件。這是個小改變,但自動化變得更加穩健了。