2

作为我之前的问题(ANTLRWorks 1.4.3 can't proper read extended-ASCII characters)的新进展,我使用十六进制编辑器创建了一个简单的文本文件:

' ' '£' '°' 'ç'

或十六进制:

27 A0 27 20 27 A3 27 20 27 B0 27 20 27 E7 27

生成的文件在 Notepad++ 中可以正常读取。在 ANTLRWorks 1.4.3 中打开时,(扩展的)ASCII 字符显示为方框。在行尾添加和删除空格后保存文件后,十六进制文件视图如下所示:

27 3F 20 27 A3 27 20 27 B0 27 20 27 3F

出于某种原因,撇号之间的初始空格 (20) 被破坏为问号 (3F),带有变音字符 (E7) 的特殊 c 和紧随其后的撇号都被问号替换。

似乎扩展 ASCII 字符的存在以某种方式导致了可怕的错误。这里的任何人都可以复制这个问题和/或提供可能的原因和解决方案吗?

提前致谢。

4

1 回答 1

2

您可以只使用 Unicode 转义符。假设你想匹配英文英镑符号,你会这样做:

PoundSign : '\u00A3';

代替:

PoundSign : '£';

它们(应该)都匹配相同的字符,并且第一个字符很可能不会被破坏。

于 2011-12-07T20:46:07.577 回答