如何在 SICStus 4.8.0 中将 UTF-8 设置为 open/3 的默认值

问题描述 投票:0回答:1

自最近的 4.8.0 以来,SICStus 支持 Prolog 文本中

ÿ
以上的 Unicode,至少在引用的上下文中,即在
quoted token (* 6.4.2 *)
double quoted list (* 6.4 *)
character code constant (* 6.4.4 *)
中。因此也支持独角兽语法,比如

| ?- U='\x1f984\'.   % teh olde way
U = '🦄' ? ;
no
| ?- U = '🦄'.
U = '🦄' ? ;
no

同样,

[user]
直接支持独角兽!但是,当使用
open/3
打开文件时,只有 BOM-ed 文件或带有
open/4
的显式选项将编码设置为 UTF-8。说平均

如果未指定编码且无法从文件内容中检测到编码,则默认为“ISO-8859-1”。

(而且似乎并没有将整个文件内容用于该检测。) 有没有办法将默认值更改为 UTF-8?这样我就可以在任何地方使用UTF-8?

utf-8 prolog sicstus-prolog
1个回答
2
投票

目前无法更改

open/3
等人使用的默认编码(SICStus Prolog 4.8.0)。

但是,如果您的文本文件以 Emacs 风格的

-*- coding:utf-8; -*-
行开头,那么它将用于设置读取文件时使用的编码。这适用于任何文本文件,包括 Prolog 源文件。

默认情况下,SICStus 还根据 Unicode BOM 设置编码,如果存在 BOM,也适用于 UTF-8。

有关详细信息,请参阅文档

更新:所以,当打开文件时,SICStus首先读取几个字节,看是否有BOM。如果不是,它会读取第一行并寻找 Emacs 风格

-*- ... -*-
。 SICStus 文档没有提到的一件事是第一行 仅在文件的前 1024 个字节中查找,因此即使没有换行符,打开时也不会读取整个文件。这就是 Emacs 是如何做到的,尽管我还没有看到它的文档。

© www.soinside.com 2019 - 2024. All rights reserved.