2017-02-25 77 views
1

我是使用GNU Prolog的新手。GNU Prolog:奇怪的字符

鉴于以下事实:

theme(cafe). 
role(manager). 
role(boss). 
role(coworker). 
numberOfCharacters(theme(cafe), 3). 
charactersRole(numberCharacters(theme(cafe), 3), role('boss'), role('manager'), role('çoworker')). 

当我查询:

charactersRole(numberCharacters(theme('cafe'), 3), role(X), role(Y), role(Z)). 

它返回一些正确的价值观,而一个值包含§代替正常字符“C”的。

X = boss 
Y = manager 
Z = 'çoworker' 

谢谢! :)

+1

不需要在''cafe''和其他名字周围加引号。 – false

回答

2
role('çoworker') 

你有cedilla就在这里,它被两个字符误传,通常不是通过unicode意识。这不是一个Prolog问题。

§为Unicode

U+00C3 U+00A7和C是

U+00E7 LATIN SMALL LETTER C WITH CEDILLA 
UTF-8: 0xC3 0xA7 

这就是你通过输出UTF8 2字节字符为非UTF8感知LATIN1终端得到什么。

+0

有没有其他方法可以实际显示'c'? –

+0

@MichaelJoshuaRamos使用非Unicode输入,如果你想要真正的'ç' - 'iconv -f utf-8 -t latin1 file.utf> file.lat'基本上 – alamar

+0

@MichaelJoshuaRamos或c用c替换c,因为我用c认为这是你需要的。您可能只是在键盘上打错了按钮,只需在最后一行重新键入“同事”即可。 – alamar