主页spacer>软件支援>关于文本编码的一些基本要点

spacer

统一码(Unicode)

为了代表文件中的文本字符,内码数值与字符间必须使用某种「映射」或对应。视乎正在使用的语言等因素,不同的字符集须要其独特的映射,如中文等的大字符集须使用多个字节来代表每个字符。如果一台计算机读取的数据的编码映射与预计的不同,便会出现一连串问题。因此要正确处理文本,确定它们之间的各种映射和字符编码转换是必要的。

过去大多数字符集和字符编码方案通常只是支持一种语言或一小部分的语言,多语种软件历来皆使用特别的方法来支持多个字符编码。简单的解决方案应是把所有常用的语言和符号的字符合并成一个单一的通用编码字符集,统一码(Unicode)正是这样的一个普遍编码字符集。因为统一码包含最常见的字符编码,它有利于数据使用单一的编码字符集。


UTF-8,UTF-16,UTF-32 及 BOM

统一码数据有几种可能的表述,包括 UTF-8,UTF-16 和 UTF-32。UTF-8 在网络上是最常见的,Java 和 Windows 使用 UTF-16,Linux 和各种 Unix 系统如 Mac OS X 则使用 UTF-8 和 UTF-32。它们之间的转换以算法为基础,快速和无损,故可以很容易地支持多种格式的数据输入或输出。无论 Mergemill Pro 在 Windows 或 Mac OS X 上运行,它总是使用 UTF-8 在用户文件内储存数据及经缓存文件处理数据。

UTF-16 和 UTF-32 使用的代码单元长分别是两个和四个字节。这些 UTF 有三项形式细分:BE,LE 和无标记。BE 形式使用 big-endian 字节序列(最高字节在前),LE 形式使用 little-endian 字节序列(最低字节在前),无标记的形式使用 big-endian 字节序列,但可能在文件的开头包括一个字节顺序标记(BOM),以提示实际使用的字节序列。BOM 是用户不可见的。

UTF-8 有一些重要优点。其一是它保留了 ASCII。UTF-8 只使用 ASCII 字节代表 ASCII 字符。在任何以 ASCII 字符作为语法字符的环境下,例如标记语言,这优点便更为重要。UTF-8 的另一个优点是于其最常见的应用中,BOM 是不必要的。由于 UTF-8 被解释为一连串单一字节序列,故没有使用 16 位或 32 位代码单元的 endian 问题。UTF-8 有使用的 BOM 皆与字节顺序无关。它只被用以将 UTF-8 与其他编码区别。

要了解更多,请浏览 unicode.org 的常见问题(英文)网页。


文字编码和 Mergemill Pro

Mergemill Pro 可以正确读取任何文本编码的模板,只要其相关的作业设定正确,因为 Mergemill Pro 会将读取的模板先转换成 UTF-8 字符编码,然后再解析。这使所有标籤都成为 Mergemill Pro 可正确解读的 ASCII 码。但你仍有两件事情需要确保。第一是要使用一个适当的文本编辑器来创建和编辑你的模板,以避免插入破坏 Mergemill 标籤语法的不可见字符。第二是使用简单的英语(ASCII)符号构建 Mergemill 标籤。Mergemill Pro 可解析 "<?[栏名]?>",但不会视使用中文符号的 "<?〔栏名〕?>" 为占位栏标籤。

提供数据的源文件更需谨慎处理。BOM 是得多问题的常见原因。如果在你的 CSV 文件的首个数据值是以双引号括起来,BOM 便一定会破坏 CSV 格式,因为它使开始双引号变为数据值内的一部分,而 CSV 格式要求此等双引号必须通过双双引号转义。遗留在第一个数据值后端的双引号也有相同问题。

即使 CSV 文件中的第一个数据值不包含逗号,换行符或双引号,问题仍会发生。你虽不必将数据值放置在双引号之间而能避免上述问题,但是 BOM 却成为第一个数据值的一部分,与真实数据值在所有地方一并被使用。如果 CSV 文件被指定包含标题行,第一列的标籤名称因为 BOM 的存在将不能匹配。这些问题也可能发生在以制表符分隔的文件。

如果你需要使用带 BOM 的源数据文件,你有三个选择:

  1. 先转换文本编码,然后才读取数据来生成输出。
    • 创建一个只含单一占位栏的模板,如 <?[编码转换]?>
    • 建构一个简单的作业使用该模板,以源文档的原来编码及纯文本格式将其读入。
    • 以没有 BOM 的文本编码输出文件。
    • 你应该使用相同的源文件档名和副档名储存文件至一个不同的文件夹。
    • 使用巳经转换文本编码的文件作为数据源产生输出。
  2. 使用 XML 格式。
  3. 使用 Mergemill 数据标记。
    • 在 Mergemill Pro 设定数据源为纯文本。
    • 以 Mergemill 数据标记「包裹」数据值,如 [栏名]...[/]
    • 以 Mergemill Pro 的撷取过滤器提取数据值。

Mergemill Pro 接受纯含单一网址列表的文本文件作为数据输入源,并对待它如同一个内含文件的文件夹。列表中的每个网页提供了数据馈送中的一个数据流。你可以指定一个网址列表的文本编码,Mergemill 会假设列表的所有网页皆使用同一文本编码。如果网页有不同的文字编码,你便需要把它们包含于不同的网址列表。

spacer

返回页首

软件功能spacer::spacer下载专区spacer::spacer购买spacer::spacer软件支援spacer::spacer视频教程spacer::spacer标签指南spacer::spacer网站导览


版权所有 · 不得转载 © 2001-2017 Cross Culture Ltd.