繁體中文

資料與電子表格 · CSV 更清理

試算表使用者的字元編碼:ASCII、Windows-1252 與 UTF-8

· 背景

csv 編碼 資料格式

ASCII 相容文字透過 UTF-8,而不受支援的舊位元組在標記邊界處停止
原始 ToolAcre 向量圖

一種編碼是關於哪些位元組代表哪些字元的協議,而 CSV 檔案從不說明它們使用哪一個。這篇文章用簡單的術語解釋了 ASCII、Windows-1252 和 UTF-8、為什麼 UTF-8 獲勝,以及這對匯出意味著什麼。

“這是一個編碼問題”作為解釋,什麼也解釋不了——編碼實際上是什麼

說「編碼問題」標識了一個邊界,但不是一個補救措施。檔案儲存位元組;頁面需要字元才能識別分隔符號和引號。如果位元組到字元協定錯誤,則解析器可能會收到替換標記,即使其 CSV 狀態機的行為與所寫的完全一樣。

ToolAcre 的協定是明確的:所選文字被讀取為 UTF-8,只有前導 UTF-8 位元組順序標記接受特殊處理。這個狹隘的契約比假裝 CSV 帶有編碼標籤更有用。出口方和接收方必須達成一致,結構清理才能可信。

ASCII:共享核心 — 七位、英文字母和標點符號,以及為什麼它幾乎適用於所有編碼

ASCII 字元與 UTF-8 重疊,表示大多數 CSV 文法使用的熟悉的英文字母、數字和標點符號。這就是為什麼檔案可以顯示良好,直到客戶名稱或符號引入共享範圍之外的位元組。此儲存庫支援這種實際觀察,但不是 ASCII 歷史或確切設計年表的主要來源。

因此,當一個名称已经损坏時,逗号和引号可以正确解析。結構上的成功不是性格上的忠誠。測試匯出時包括非 ASCII 固定裝置,因為全英語樣本無法執行對國際資料重要的編碼邊界。

ASCII 重疊是有用的上下文,而位元計數和歷史記錄需要外部來源

舊代碼頁在區域表下分配位元組值,並使用錯誤的表會變更字元。工作簿请求 Windows-1252 詳细信息,但 ToolAcre 不包含可選擇的解碼器或映射表。其配置警告 Windows-1252 和 Shift-JIS 被讀取為 UTF-8 並顯示替換字元。

通過生產者設置或從未觸及的字節工作的編碼感知檢查器來識別遗留源。不要要求该清理工從名称中推斷出该表。一旦 `File.text()` 傳回損壞的字串,解析器就無法恢復解碼已丟棄的位元組差異。

舊代碼頁詳細資訊位於儲存庫外部證據; ToolAcre 不會解碼它們

UTF-8 可以表示超出 ASCII 重疊範圍的文字,同時保持那些常見語法字元不變。瀏覽器在工作器解析之前將選定的位元組轉換為 JavaScript 字串。如測試所示,在該字串中,Unicode 名稱和表情符號透過 ToolAcre 的解析器和序列化器進行往返。

該證據並不能使該模組成為完整的 Unicode 解釋器。它說該路由保留有效的解碼字串、引用欄位和匯出文字。有關規範化形式、字素簇或每個 Unicode 轉換的問題都在代碼之外,不應從一次成功的往返中推斷出來。

ToolAcre 示範 UTF-8 文字處理,而非完整的 Unicode 編碼模型

该項目選擇 UTF-8 因為這是其配置的輸入和輸出合同。儲存庫檔案無法確定更廣泛的網路採用 UTF-8 的歷史原因,因此本文省略了所要求的宣告。產品真相並不需要一個普遍採用的敘述才具有可操作性。

對於操作員來說,標準化意味著在載入之前匯出或轉換為 UTF-8,驗證代表性多語言值,然後序列化經過審核的表。接收脚本还應该期待 UTF-8 並决定是否接受 BOM。雙方達成的協議比關於違約的一般宣告更重要。

儲存庫將 UTF-8 建立為該工具的合同,而不是更廣泛的網路選擇它的原因

在分隔符號偵測之前刪除前導 U+FEFF,結果記錄 `hadBom`,以便介面可以報告它。當訪客選擇該選項時,匯出可以在前面新增相同的標記。如果沒有該選擇,輸出將直接從第一個標頭字元開始。

此標記可以幫助某些電子表格工作流程識別 UTF-8,但配置警告嚴格的腳本或資料庫導入可能會將其附加到第一個標頭。使用針對已知消費者的選項,而不是通用清理度。 BOM 策略是介面合約的一部分。

這不包括什麼 — UTF-16 匯出、東亞編碼和組合字元規範化

UTF-16、東亞遺留編碼和 Unicode 規範化此處未實現。位元組順序檢測或替換字元修復也不是。命名這些遺漏可以防止使用者將成功下載視為每個原始角色都倖存下來的證據。

如果涉及不支援的字節,請保留原始位元組並使用專為該來源設計的解碼器。轉換為经過驗證的 UTF-8 後,ToolAcre 可以處理其記錄的 CSV 結構。將字元解碼與行解析分開可以更輕鬆地診斷故障並避免破壞性的猜測。

讓每個匯出 UTF-8 並這樣說 — ToolAcre CSV Cleaner 的編碼修復如何在瀏覽器中將舊匯出轉換為 UTF-8

將 UTF-8 設為明確的交換要求,並使用資料集使用的真實字元類別進行測試。ToolAcre可以刪除或新增前導 UTF-8 BOM、保留有效的 Unicode 單元格字串並標準化 CSV 參考。它無法執行原始大綱所承諾的遺留轉換。

當出現替換字元時,請在清理或重新儲存之前停止。從原始位元組中恢復,驗證名稱,然後返回。此順序保護資訊:在分隔符號、重複和空白操作可以產生可靠的輸出之前,編碼必須正確。