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 文件可能会变得有困难。该vim和emacs编辑器(似乎使用最广泛)都能够干净地处理 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/ |
版权
此作品根据知识共享署名-相同方式共享 3.0 未移植许可进行许可。要查看此许可的副本,请访问 https://creativecommons.org/licenses/by-sa/3.0/。