elm 内部用于表示字符的字符集通常被称为 ISO-8859-1,这是它所符合的标准名称。 它也被称为 Latin-1。 任何使用此字符集中的字符的消息都应在其邮件头中包含以下行
Content-Type: text/plain; charset=iso-8859-1接收系统应识别此字段,并在显示消息时采取适当的措施。 text/plain 消息的默认字符集值为 us-ascii。
为了能够显示使用 ASCII 以外字符集的消息,elm 必须知道如何打印这些字符。 默认情况下,当 elm 收到字符集字段不是 us-ascii 的消息(或者内容类型不是 text/plain 的消息)时,它会尝试使用名为 metamail 的命令来显示消息。 需要使用 metamail 显示的消息在概览屏幕的第一列中以 `M' 显示。
由于 elm 的原生字符集是 ISO-8859-1,因此无需调用 metamail 即可显示使用此字符集的消息。 如果告知 elm 显示器理解 ISO-8859-1,它将不会使用 metamail,而是直接显示消息。 这可以通过在全局 elm.rc 中设置以下选项来完成
displaycharset = iso-8859-1请注意,即使您永远不会发送或接收任何实际包含 ASCII 以外字符的消息,也应该设置此选项。 这是因为发送此类消息的人通常会配置他们的邮件程序,默认情况下将正确的 Content-Type: 字段放入邮件头中,无论他们是否发送仅包含 ASCII 的消息。
但是,仅在 elm.rc 中设置此选项是不够的。 问题在于,当使用其内置寻呼器显示消息时,elm 会为每个字符调用一个库函数,以确定它是否可打印。 默认情况下,此函数只会将 ASCII 字符识别为可打印字符,并将所有其他字符显示为 ``?''. 您可以通过将环境变量 LC_CTYPE 设置为 ISO-8859-1 来克服此问题,这会告知库接受 Latin-1 字符为可打印字符。 自 libc-4.5.8 起,已提供对此功能和其他功能的支持。
当发送包含来自 ISO-8859-1 的特殊字符的消息时,您应确保在 elm.rc 文件中设置另外两个变量
charset = iso-8859-1 textencoding = 8bit这使得 elm 在邮件头中将字符集报告为 ISO-8859-1,并将其作为 8 位值发送(默认情况下,所有字符都将剥离为 7 位)。
当然,这些选项中的任何一个也可以在私有 elmrc 文件中设置,而不是在全局文件中设置。