SWI prolog无法处理瑞典语字母

SWI prolog无法处理瑞典语字母,prolog,letters,Prolog,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 =

我有一个名为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.  % Ö
我收到以下错误消息:

ERROR: /Users/sahandz/.Trash/syntax/syntax.pl:185:97: Syntax error: Unexpected end of file
我怀疑这是因为在我发布的摘录末尾有瑞典信件。我相信是这样的,因为第185行是第一行出现瑞典字母的地方(请参见错误消息)

我能做些什么

编辑:


删除瑞典语字母后(它们毕竟在注释中),我仍然会遇到相同的错误。

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

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

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

  • 使用UTF-8编码和BOM表保存文件

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

    :- endcoding(utf8).
    
  • 两种解决方案(不相互排斥):

  • 使用UTF-8编码和BOM表保存文件

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

    :- endcoding(utf8).
    

  • 请注意,
    编号(C)
    后缺少开口圆括号,末尾缺少闭合圆括号。如果您想处理Unicode字符,请考虑内置的<代码>代码类型/ 2 < /代码>和<代码> CARYTYPE / 2 。哪个字符集的有效字符为150?请注意,编号(C)后没有开头的圆括号,结尾没有结尾的圆括号。如果您想处理Unicode字符,请考虑内置的<代码>代码类型/ 2 < /代码>和<代码> CARYTYPE / 2 。哪个字符集的有效字符数为150?