2  字符集和源文件编码

2  字符集和源文件编码

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 ø - ÿ 小写字母

表 2.1:  字符类

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

  • 字符串文字。示例:"√π"

  • 字符文字。示例:$∑

  • 代码中的注释。

  • 引用的原子。示例:'μs'

  • 函数名称。示例:'s_to_μs'(S) -> S * 1_000_000.

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

更改

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

Erlang 源文件 编码 由源文件的前两行中的一条注释选择。与正则表达式 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。