2 字符集和源文件编码
2.1 字符集
Erlang 标记的语法允许使用完整的 ISO-8859-1 (Latin-1) 字符集。这在以下方面有所体现:
-
所有 Latin-1 可打印字符都可以使用,并且在没有转义反斜杠约定的情况下显示。
-
未引用的原子和变量可以使用所有 Latin-1 字母。
八进制 | 十进制 | 类 | |
200 - 237 | 128 - 159 | 控制字符 | |
240 - 277 | 160 - 191 | - ¿ | 标点符号 |
300 - 326 | 192 - 214 | À - Ö | 大写字母 |
327 | 215 | × | 标点符号 |
330 - 336 | 216 - 222 | Ø - Þ | 大写字母 |
337 - 366 | 223 - 246 | ß - ö | 小写字母 |
367 | 247 | ÷ | 标点符号 |
370 - 377 | 248 - 255 | ø - ÿ | 小写字母 |
以下标记也允许使用 Latin-1 范围之外的 Unicode 字符:
-
字符串文字。示例:"√π"
-
字符文字。示例:$∑
-
代码中的注释。
-
引用的原子。示例:'μs'
-
函数名称。示例:'s_to_μs'(S) -> S * 1_000_000.
用作模块名称、应用程序名称和节点名称的原子仅限于 Latin-1 范围。
更改
对字符串文字、字符文字和注释中的 Unicode 支持是在 Erlang/OTP R16B 中引入的。对原子和函数名称中 Unicode 的支持是在 Erlang/OTP 20 中引入的。
2.2 源文件编码
Erlang 源文件 编码 由源文件的前两行中的一条注释选择。与正则表达式 coding\s*[:=]\s*([-a-zA-Z0-9])+ 匹配的第一个字符串选择编码。如果匹配的字符串是无效编码,则会忽略它。有效编码是 Latin-1 和 UTF-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。