错误:在程序中迷路'\ 302'

und*_*oeg 10 c++ ubuntu text codeblocks

我在Ubuntu 10.10上使用Code :: Blocks.我已连接Mac键盘并将键盘设置设为"Swiss German Mac".现在每当我写一个等号,然后是一个空格(类似宽度= 100)我得到错误消息错误:stray'\ 302'在程序中.

我知道这个错误意味着文本文件中有一个非标准字符.

当我删除空格字符时,程序编译得很好.这意味着Code :: Blocks会添加某种特殊字符.但我不明白为什么会这样.任何人都有一个想法.

'\ 302'代表什么角色?

[更新]我进一步调查了这个问题.当我使用组合移位+空格时,我得到了这个迷路.现在我知道它不会经常发生.但它仍然相当烦人,特别是在编写代码时...有人知道是否有办法在X11中关闭这个组合?

[求助]感谢无用的回答,我能够解决"问题".它实际上更像是一个功能.Shift + space默认创建了spacenolinebreak.所以通过改变xmodmap

xmodmap -e "keycode  65 = space space space space space space"
Run Code Online (Sandbox Code Playgroud)

这个行为被覆盖了,现在一切正常.

谢谢!

Tug*_*tes 7

\ 302表示编译器遇到的字节值的八进制表示.它转换为二进制的11000010,这让我觉得它是两个字节的utf-8序列的开始.那么这个序列必须是:

11000010 10??????
Run Code Online (Sandbox Code Playgroud)

它编码二进制unicode点10 ??????,它可以是从U + 80到U + BF的任何东西.

从U + 80开始的几个字符是特殊空格和中断,通常不会在文本编辑器中显示.

可能不是你的编辑器而是Xorg,由于你的键盘设置而发出这些字符.尝试切换到通用的美式键盘并测试问题是否仍然存在.


Use*_*ess 7

既然你确定它是由击球引起的shift+space,你可以检查X本身在做什么.首先,从命令行运行xev,点击shift+space并检查输出.例如,我看到:

$ xev
KeyPress event, serial 29, synthetic NO, window 0x2000001,
    root 0x3a, subw 0x0, time 4114211795, (-576,-249), root:(414,593),
    state 0x0, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyPress event, serial 29, synthetic NO, window 0x2000001,
    root 0x3a, subw 0x0, time 4114213059, (-576,-249), root:(414,593),
    state 0x1, keycode 65 (keysym 0x20, space), same_screen YES,
    XLookupString gives 1 bytes: (20) " "
    XmbLookupString gives 1 bytes: (20) " "
    XFilterEvent returns: False
...
Run Code Online (Sandbox Code Playgroud)

然后,运行xmodmap -pk并查找键码(空格应该是65,如上所示,但检查你的xev输出).如果你看到类似的东西

     65         0x0020 (space)
Run Code Online (Sandbox Code Playgroud)

然后X没有这样做.在另一方面,如果我选择哪一个字符键通过修改shift,我看到这样的事情:

     58         0x006d (m)      0x004d (M)
Run Code Online (Sandbox Code Playgroud)

如果您的密钥代码有两个或更多密钥,则X是罪魁祸首.在这种情况下,类似的东西xmodmap -e 'keycode 65 space'应该工作.