SWI-prolog 无法处理瑞典字母

SWI-prolog not able to handle swedish letters

我有一个名为 syntax.pl 的文件。这是其中的节选:

% ---------- %


allowed_char( C ) :-
  number( C ),
  ( C >= 97, C =< 122 ) ;
  ( C >= 65, C =< 90 ) ;
  ( C >= 48, C =< 57 ) ;
  C = 39 ;
  C = 40 ;
  C = 41 ;
  C = 44 ;
  C = 196 ;
  C = 197 ;
  C = 214 ;
  C = 228 ;
  C = 229 ;
  C = 246 ;
  % Wide characters
  C = 195 ;
  C = 165 ; % å
  C = 164 ; % ä
  C = 182 ; % ö
  C = 133 ; % Å
  C = 132 ; % Ä
  C = 150.  % Ö

I 运行 SWI-序言版本 7.2.3。我运行以下命令:

?- [syntax].

我收到以下错误消息:

ERROR: /Users/sahandz/.Trash/syntax/syntax.pl:185:97: Syntax error: Unexpected end of file

我怀疑这是因为我发布的摘录末尾的瑞典字母。我相信是这样,因为第 185 行是出现瑞典字母的第一行(请参阅错误消息)。

我该怎么办?

编辑:

删除瑞典字母后(它们毕竟在评论中)我仍然得到同样的错误。

我通过使用 UTF-8 编码重新保存 syntax.pl 文件解决了这个问题。这可以在许多文本编辑器中完成。

两种解决方案(互不排斥):

  1. 使用 UTF-8 编码和 BOM 保存文件。

  2. 使用 encoding/1 指令作为 Prolog 文件第一行中的第一项。在这种情况下,您仍然需要使用 UTF-8 编码保存文件,但不需要 BOM:

    :- endcoding(utf8).