查看源码 字符集和源文件编码

字符集

Erlang 标记的语法允许使用完整的 ISO-8859-1 (Latin-1) 字符集。 这在以下方面很明显:

  • 所有 Latin-1 可打印字符都可以使用,并且无需转义反斜杠约定即可显示。
  • 未加引号的原子和变量可以使用所有 Latin-1 字母。
八进制十进制类别
200 - 237128 - 159控制字符
240 - 277160 - 191- ¿标点符号
300 - 326192 - 214À - Ö大写字母
327215×标点符号
330 - 336216 - 222Ø - Þ大写字母
337 - 366223 - 246ß - ö小写字母
367247÷标点符号
370 - 377248 - 255ø - ÿ小写字母

表:字符类别

以下标记也允许使用 Latin-1 范围之外的 Unicode 字符:

  • 字符串字面量。示例:"√π"
  • 字符字面量。示例:$∑
  • 代码中的注释。
  • 带引号的原子。示例:'μs'
  • 函数名称。示例:'s_to_μs'(S) -> S * 1_000_000.

用作模块名称、应用程序名称和节点名称的原子限制在 Latin-1 范围内。

变更

Erlang/OTP R16B 中引入了对字符串字面量、字符字面量和注释中 Unicode 的支持。Erlang/OTP 20 中引入了对原子和函数名称中 Unicode 的支持。

源文件编码

Erlang 源文件 encoding 通过源文件前两行中的一条注释来选择。与正则表达式 coding\s*[:=]\s*([-a-zA-Z0-9])+ 匹配的第一个字符串选择编码。如果匹配的字符串是无效的编码,则会被忽略。有效的编码是 Latin-1UTF-8,其中字符的大小写可以自由选择。

如果没有有效的 coding 注释,则默认的 Erlang 源文件编码为 UTF-8。

两个示例,都选择 Latin-1 作为源文件编码

%% For this file we have chosen encoding = Latin-1
%% -*- coding: latin-1 -*-

变更

Erlang 源文件的默认编码在 Erlang/OTP 17.0 中从 Latin-1 更改为 UTF-8。