文字編碼
我的讀取器知道檔案是什麼編碼,還是在猜?
text-encoding 預設集用一個指令為這個問題建立出整組真實測試檔案,並在旁邊放一個
manifest.json,說明你的系統應如何回應每個檔案。以下所有內容都依此版本的預設值從程式中讀取。
它通常能發現什麼?
- 讀取器假設為 UTF-8,把 UTF-16 檔案顯示成每三個字元一個,或一排排方框
- 位元組順序標記被當成內容讀取,導致匯入的第一個欄位以三個多餘字元開頭
- 匯入器依據開頭幾個位元組猜測編碼,遇到較長的檔案卻猜成別的
- CRLF 檔案被拆成多列,每列後面多出一個空列,或歸位字元殘留在最後一個欄位裡
組合裡有什麼?
使用預設值時,如 tfg preset show text-encoding 所回報的:
| 檔案數 | 20 |
|---|---|
| 其配方中的 target 數 | 20 |
| 總大小 | 81 920 B |
| 格式 | csv, log, md, txt, xml |
以及該組合的清單對你的系統有何預期:
| 預期 | 意義 | 檔案數 |
|---|---|---|
accept | 你的系統應該接受這個檔案。 | 10 |
unspecified | 取決於你的系統規則。由你決定,然後檢查實際發生的是否符合你的本意。 | 10 |
你可以變更什麼?
| 設定 | 接受 | 預設值 | 作用 |
|---|---|---|---|
--sample |
形如 2mb 的大小 | 4kb |
組合中每個檔案的大小。UTF-16 每個字元佔兩個位元組,所以奇數會被拒絕。 |
如何執行?
查看組合的開銷、建置它,或取出它的配方來編輯:
tfg preset show text-encoding
tfg generate --preset text-encoding --out ./text-encoding
tfg preset eject text-encoding > text-encoding.yaml
也可以在你自己的配方中以它為基礎,放在測試旁邊:
version: 1
extends: preset:text-encoding