文本编码
我的读取器知道文件是什么编码,还是在猜?
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