作为上一个问题(ANTLRWorks 1.4.3 can't properly 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),而带有cedilla字符的特殊c(E7)和跟随它的撇号都被问号取代。
似乎存在扩展的ASCII字符会导致事情发生可怕的错误。这里的任何人都可以复制此问题和/或提供可能的原因和解决方案吗?
提前致谢。
答案 0 :(得分:2)
您可以改为使用Unicode转义符。假设你想匹配英镑符号,你可以这样做:
PoundSign : '\u00A3';
而不是:
PoundSign : '£';
他们(应该)都匹配相同的角色,第一个很可能不会被破坏。