Ошибка: отклонение '\ 302' в программе

Я использую Code:: Blocks на Ubuntu 10.10. Я подключил клавиатуру Mac и установил настройки клавиатуры на "Swiss German Mac". Теперь всякий раз, когда я пишу знак равенства, за которым следует пробел (что-то вроде width = 100), я получаю сообщение об ошибке: в программе программа "302".

Я знаю, что эта ошибка означает, что в текстовом файле есть нестандартный символ.

Когда я удаляю символ пробела, программа компилируется просто отлично. Таким образом, Code:: Blocks добавляет какой-то особый символ. Но я не понимаю, почему это происходит. У кого-нибудь есть идея.

Какой символ означает '\ 302'?

[ОБНОВЛЕНИЕ] Я немного углубился в проблему. Я использую комбинированный сдвиг + пробел. Теперь, когда я знаю, что этого не происходит часто. Но это все еще довольно раздражает, особенно при написании кода... Кто-нибудь знает, есть ли способ отключить эту комбо в X11?

[решено] Благодаря бесполезному ответу я смог решить "проблему". Это скорее функция. Shift + пространство по умолчанию создало пробел. Поэтому, изменив xmodmap с помощью

xmodmap -e "keycode  65 = space space space space space space"

это поведение было переопределено, и теперь все работает нормально.

СПАСИБО!

Ответ 1

Так как вы уверены, что это вызвано нажатием 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
...

Затем запустите xmodmap -pk и найдите код ключа (пространство должно быть 65, как указано выше, но проверьте ваш выход xev). Если вы видите что-то вроде

     65         0x0020 (space)

Тогда X не делает этого. С другой стороны, если я выбираю символьный ключ, который изменяется на shift, я вижу что-то вроде этого:

     58         0x006d (m)      0x004d (M)

Если у вас есть два или более клавишных ключей для вашего кодового ключа, Х является виновником. В этом случае должно работать что-то вроде xmodmap -e 'keycode 65 space'.

Ответ 2

\ 302 означает восьмеричное представление значения байта, с которым столкнулся компилятор. Он преобразуется в 11000010 в двоичном формате, что заставляет меня думать, что это начало двухбайтовой последовательности utf-8. Тогда эта последовательность должна быть:

11000010 10??????

Кодирует двоичную юникодную точку 10, которая может быть от U + 80 до U + BF.

Несколько символов, начинающихся с U + 80, представляют собой специальные пробелы и разрывы, которые обычно не отображаются внутри текстового редактора.

Возможно, это не ваш редактор, а Xorg, который испускает эти символы из-за настроек вашей клавиатуры. Попробуйте переключиться на общую клавиатуру США и проверьте, не исчезли ли проблемы.

Ответ 3

Это звучит как проблема кодирования. Я не использовал код:: блоки в течение многих лет, поэтому не уверен, что он позволяет вам выбирать разные кодировки. Как насчет открытия вашего файла кода с помощью gedit и сохранения его как UTF-8, а затем повторите попытку? Но звучит довольно странно, что вы получаете такую ​​проблему, используя пробельные символы.

Ответ 4

'\302' - обозначение C для восьмеричного номера 302 8, которое равно C2 16 и 194 10. Так что это не ASCII.

Какой символ, который он отображает, зависит от кодировки. В латинском-1 это, например, символ Â.

Ответ 5

Я видел этот тип проблемы при копировании и вставке с веб-страниц или других электронных документов. Обычными виновниками были бы недопустимые цитаты типа `вместо 'или что-то подобное. Попробуйте использовать ошибку компилятора, чтобы указать вам, где в файле может быть ошибка.

Ответ 6

Я видел эту проблему в своей Linux-коробке с финской клавиатурой. Также случается с emacs и т.д. У меня нет хорошего решения для этого, но угадывать сообщения о том, что это происходит в другом месте, также полезно...

Ответ 7

Если вы откроете свой файл в Emacs и set-buffer-file-coding-system для чего-то вроде "unix" или какого-либо асиального сорта, то при попытке сохранить его предупредит, что буфер содержит недопредставленные символы и указывает на них, чтобы вы могли их исправить.

Ответ 8

У меня была такая же проблема, если изменить файл примера us-ascii. Поэтому я конвертирую его в utf-8, вот команда gnu/linux:

iconv -c -t us-ascii -f utf-8 source_file -o dest_file

а затем добавьте мои изменения... больше ошибок! для проверки исходного кодирования используйте

file -i source_file

Я должен добавить символ non ascii, чтобы позволить iconv выполнять задание!!??