简体中文

数据和电子表格 · 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:共享核心 — 七位、英文字母和标点符号,以及为什么它几乎适用于所有编码

对于大多数 CSV 语法所使用的熟悉的英文字母、数字和标点符号,ASCII 字符与 UTF-8 重叠。这就是为什么文件可以显示良好,直到客户名称或符号引入共享范围之外的字节。该存储库支持这种实际观察,但不是 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 引用。它无法执行原始大纲所承诺的遗留转换。

当出现替换字符时,请在清理或重新保存之前停止。从原始字节中恢复,验证名称,然后返回。该顺序保护信息:在分隔符、重复和空白操作可以产生可靠的输出之前,编码必须正确。