關於這個工具
WhatsApp 可以把任何一段聊天匯出成文字檔,含媒體或不含媒體都行。換手機時紀錄沒搬過去,常常只剩這份檔案;租屋糾紛、工作上的往來要留紀錄,要的也正是它。匯出檔讀得了,但很難讀:一整份長長的 .txt,每一行前面一個時間戳。這一頁把它變回聊天畫面。把 .txt、含媒體匯出的 zip 或解壓縮後的資料夾丟進來,訊息就會變成一個個對話框,有日期分隔線,系統訊息(加密說明、有人加入或離開、群組改名)淡色顯示,上方有搜尋框和「跳到某一天」。從參與者清單選一個當「你自己」——頁面會先猜訊息最多的那位,你可以改。
這些行是怎麼被讀懂的
iPhone 和 Android 寫出來的匯出檔長得不一樣——一邊是 [日期 時間] 名字: 訊息 的方括號格式、每行開頭還藏著一個看不見的從左到右標記(U+200E),另一邊是 日期, 時間 - 名字: 訊息——而日期順序、12 或 24 小時制、上下午的字樣又會跟著手機語言變。這一頁從檔案本身判斷平台和格式。這些樣式是依公開描述推定的,不是出自任何規格書,所以長得不一樣的匯出檔會被報出來,不會默默讀錯。不像訊息開頭的行會接到上一則後面,多行訊息就是這樣保住的;一行壞掉的時間只影響那一行。日和月分不出來的時候——整份檔案每個日期兩個欄位都 ≤ 12——頁面會請你選,不會亂猜,預設是你瀏覽器語系的慣例。時間照 WhatsApp 寫的原樣顯示,因為匯出檔裡沒有時區。
媒體與附件
匯出含媒體時,WhatsApp 留在文字裡的記號——iPhone 的 <attached: …>、Android 的 … (file attached)——會對應到 zip 或資料夾裡的檔案,照片、影片、語音訊息就直接在對話裡顯示、播放,從檔案裡來。對應的檔案不在,或者匯出時沒含媒體、文字裡只留下「媒體已省略」,那則訊息就會這樣寫。語音訊息只能播放,不會轉成文字;要逐字稿的話,站上的字幕工具(/video-subtitles)可以吃音訊檔。
搜尋與統計
搜尋就是對每則訊息做純粹的子字串比對,轉小寫、做 NFKC 正規化,所以中文、日文的名字和字詞不用斷詞也找得到;點一個結果就跳到那則訊息並高亮。統計頁列出每位參與者的訊息數和字數、24 小時分布圖看聊天最熱絡的時段,以及每月訊息數。到這裡就停了:沒有情緒分析,也沒有「誰比較愛誰」這種解讀。它只會數數。
存成 Markdown 或 CSV
整段對話可以存成 Markdown,或存成 CSV、一則訊息一列——時間、寄件者、內容、附件檔名——依 RFC 4180 加引號,試算表打開不會跑掉。Markdown 頁尾會註明這份檔案是從 WhatsApp 匯出檔轉換而來、未經修改,並附上原始檔的 SHA-256,之後可以核對這份副本是不是出自那個匯出檔。這一頁沒有 PDF 匯出;要列印的話,把 Markdown 用任何編輯器打開再列印。
匯出檔本身就漏掉的東西
WhatsApp 的匯出本身通常就會漏東西:投票、emoji 反應、編輯紀錄、某則回覆引用的是哪一則、閱後即焚的內容,一般都不在文字檔裡,而且 app 對一次匯出的訊息則數有上限——含媒體和不含媒體的上限不同。沒匯出的東西這一頁沒辦法變出來。它也不是備份工具:這裡看得到的,沒辦法匯回 WhatsApp。所有處理都在這個分頁的記憶體裡,關掉就沒了,不上傳、不儲存。WhatsApp 是其所有者的商標;這是一個獨立的檢視器,用來讀它匯出的檔案,不是官方工具。