Ubuntu10.10でCode :: Blocksを使用しています。 Macキーボードを接続し、キーボード設定を「スイスドイツ語Mac」に設定しました。これで、等号の後にスペース(width = 100など)を書き込むと、エラーメッセージエラーが表示されます:プログラム内の漂遊 '\ 302'。
このエラーは、テキストファイルに非標準の文字が含まれていることを意味します。
スペース文字を削除すると、プログラムは正常にコンパイルされます。つまり、Code :: Blocksはある種の特殊文字を追加します。しかし、なぜこれが起こるのかわかりません。誰でもアイデアがあります。
'\ 302'はどの文字を表しますか?
[更新]問題をもう少し調査しました。コンボシフト+スペースを使用すると、この迷いが発生します。私はそれがもうそれほど頻繁に起こらないことを知ったので。しかし、特にコードを書くときはまだかなり面倒です... X11でこのコンボをオフにする方法があるかどうか誰かが知っていますか?
【解決】役に立たない回答のおかげで、「問題」を解決することができました。それは実際にはもっと機能です。 Shift + spaceは、デフォルトでspacenolinebreakを作成しました。したがって、xmodmapを次のように変更することによって
xmodmap -e "keycode 65 = space space space space space space"
この動作はオーバーライドされ、すべてが正常に機能するようになりました。
ありがとう!
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はこれを行っていません。一方、isshift
によって変更された文字キーを選択すると、次のようになります。
58 0x006d (m) 0x004d (M)
キーコードに2つ以上のキーシムがある場合は、Xが原因です。その場合、xmodmap -e 'keycode 65 space'
のようなものが機能するはずです。
\ 302は、コンパイラが検出したバイト値の8進表現を表します。これはバイナリで11000010に変換され、2バイトのutf-8シーケンスの始まりだと思います。その場合、このシーケンスは次のようになります。
11000010 10??????
これは、U +80からU + BFまでの任意のバイナリユニコードポイント10 ??????をエンコードします。
U + 80で始まるいくつかの文字は、通常はテキストエディタ内に表示されない特別なスペースと区切りです。
おそらく、キーボードの設定によってこれらの文字を出力するのは、エディターではなくXorgです。一般的なUSキーボードに切り替えて、問題が解決するかどうかをテストしてください。
それはある種のエンコーディングの問題のように聞こえます。私はcode :: blocksを何年も使用していないので、異なるエンコーディングを選択できるかどうかはわかりません。コードファイルをgeditで開き、UTF-8として保存してから、再試行してみてはどうでしょうか。しかし、スペース文字を使用するとこのような問題が発生するのはかなり奇妙に聞こえます。
Emacsでファイルを開き、「unix」またはいくつかのASCIIの種類のようなものにset-buffer-file-coding-systemを開くと、保存しようとすると、バッファに表現できない文字が含まれていることを警告し、あなたがそれらを修正できるようにそれら。
Webページやその他の電子文書からコピーして貼り付けるときにこの種の問題が発生しました。一般的な原因は、「」の代わりに「」などの無効な引用符です。コンパイラエラーを使用して、ファイル内のどこにエラーがあるかを確認してください。
'\302'
は8進数302のC表記です8、C2に等しい16 と19410。したがって、ASCIIではありません。
どの文字にマップするかは、エンコーディングによって異なります。ラテン語-1では、たとえば、それはÂ文字です。
Us-asciiサンプルファイルを変更しても同じ問題が発生しました。だから私はそれをutf-8に変換します、ここにgnu/linuxコマンドがあります:
iconv -c -t us-ascii -f utf-8 source_file -o dest_file
そして、私の変更を追加します…これ以上のエラーはありません!初期エンコーディングを確認するには、
file -i source_file
Iconvが仕事をできるように、ASCII以外の文字を追加する必要があります!! ??
フィンランド語のキーボードを備えたLinuxボックスでこの問題が発生しました。 emacsなどでも発生します。良い解決策はありませんが、他の場所で発生しているという事実についてのレポートも役立ちます...