GLEP 31:Portage 树项目字符集

作者 Ciaran McCreesh <[email protected]>
类型 标准跟踪
状态 最终
版本 1
创建日期 2004-10-27
上次修改日期 2014-01-17
发布历史 2004-10-28, 2004-11-01, 2004-11-11
GLEP 源码 glep-0031.rst

摘要

需要一套关于 Portage 树中允许使用哪些字符以及如何对其进行编码的指南。

状态

于 2004 年 11 月 8 日批准,假设实现将包括有关在 nano 中正确编码文件的文档。

动机

目前,我们有几位开发人员和更多用户,他们的姓名需要使用标准“安全”0..127 ASCII 范围之外的字符(例如,重音符号)。目前还没有关于如何表示这些字符的标准,导致整个树中存在不一致性。

虽然相关问题已经非正式地讨论过很多次,但尚未做出正式决定。

规范

ChangeLog 和元数据字符集

建议使用 UTF-8 ([1]) 对 Portage 树内的 ChangeLog 和 metadata.xml 文件进行编码。

UTF-8 允许表达 Unicode ([2]) 的全部字符范围,鉴于 Gentoo 开发人员和用户群的多样性,这是必要的。它与 ASCII 的 0..127 字符兼容,并且不会显着增加主要由美式英语字符组成的文件的存储需求。它得到广泛支持,广泛使用,并且是官方标准。

ISO-8859-* 字符集 ([3]) 适合,因为它们无法表达所有必需的字符。

Ebuild 和 Eclass 字符集

出于与之前相同的原因,建议将 UTF-8 作为 ebuild 和 eclass 文件的官方编码。

但是,应警告开发人员,任何由 bash 解析的代码(换句话说,非注释)以及任何回显到屏幕上的输出(例如,einfo 消息)或提供给 Portage 的输出(例如任何标准全局变量)都不得使用常规 ASCII 0..127 范围之外的任何内容,以确保兼容性。

files/ 条目字符集

补丁必须与它们修补的文件具有相同的字符集。对于其他文件/条目(例如,GNOME 桌面文件),与上游推荐的字符集保持一致是最合理的。

适用于文件和目录名称的字符

文件或目录名称不能安全地使用 ASCII 0..127 范围之外的字符。(当然,ASCII 0..127 范围内的并非所有字符都可以安全使用。)

向后兼容性

现有树使用多种编码。将现有的 ChangeLog 和元数据文件修复为使用 UTF-8 将非常简单。

echangelog工具与字符集无关。为了正确输入 UTF-8,开发人员必须切换到 UTF-8 shell 会话。这只适用于开发人员输入使用“特殊”字符的新文本——现有字符不会被破坏。

某些文本编辑器无法干净地处理 UTF-8。但是,由于echangelog工具通常是生成 ChangeLog 条目的正确方法,因此这应该不是一个主要问题。在这些编辑器中正确生成 metadata.xml 文件可能会变得有困难。该vimemacs编辑器(似乎使用最广泛)都能够干净地处理 UTF-8——对于 vim,这可以通过gentoo-syntax([4]) 软件包自动配置。

参考文献

[1]RFC 3629:UTF-8,ISO 10646 的转换格式 http://www.ietf.org/rfc/rfc3629.txt
[2]ISO/IEC 10646(通用多八位编码字符集)
[3]ISO/IEC 8859(8 位单字节编码图形字符集)
[4]app-vim/gentoo-syntax 软件包,https://developer.berlios.de/projects/gentoo-syntax/