2017-09-07 13 views
2

スウェーデン文字å、ä、öを含むjavaファイルがありますファイル、私はISO-8859-1、これらを含むlatin1テキストファイルを解析しています)。ファイルはコンパイルされ、Windowsコンピュータで実行されます。Ubuntu上でjava-fileを特殊文字å、ä、ö(windows上で動作します)でコンパイルできません

bashでのUbuntu上のファイルをコンパイルしている間、私は、しかし、次のエラーを取得しています:

ConstructDatabase.java:76: error: unmappable character for encoding ASCII 
     case '?': return 27; 
      ^
ConstructDatabase.java:77: error: unmappable character for encoding ASCII 
     case '?': return 28; 
      ^
ConstructDatabase.java:78: error: unmappable character for encoding ASCII 
     case '?': return 29; 

を私は、ファイルをコンパイルしますjavac -encoding ISO-8859-1フラグを、使用してみましたが、意図したとおりに動作しません。私もexport LC_ALL=Cコマンドを使ってみました(私はなぜそれがJavaのコンパイルに影響を与えるのかはわかりませんが、他のスレッドでは示唆されていましたが)。

ヒントをいただければ幸いです。

+0

コンパイラは、ファイルの書き込みに使用する文字エンコーディングを知っている必要があります。それを伝えるためには、ファイルを書くために使われた文字エンコーディングと、それをどう伝えるかを知る必要があります。後者については、 'javac -help'か同等のものを試してください。 –

答えて

0

コンパイルエラーは、「ASCIIをエンコードするためのマップできない文字」という情報のほとんどを必要とします。つまり、JavaソースファイルはASCIIでエンコードされ、ASCIIにはこれらの文字が含まれていないとコンパイラは予想しています。

ソースファイルにはスウェーデン語の文字が含まれています。おそらくISO-8859-1、おそらくUTF-8としてエンコードされています。ソースファイルがどのファイルを使用しているかを調べる必要があります(これは些細な作業ではありません)。

あなたのUbuntu環境は、デフォルトのエンコーディングとしてASCIIを使用しているようです。次に、ソースファイルを端末にエコーするとヒントが得られるかもしれません。スウェーデン語の文字の代わりに2つの潜在的な文字の組み合わせが表示される場合、そのファイルはUTF-8でエンコードされている可能性があります。

Ubuntuのコンパイラに正しいエンコーディングを伝える必要があります。 javac -encoding ISO-8859-1が期待どおりに動作しないため、ファイルがUTF-8でエンコードされていると推測されますので、javac -encoding UTF-8が解決策になるかもしれません。

エンコードを混乱させる代わりに、ソースファイルの文字を\ uxxxxエスケープで置き換えることができます。これは、ASCII、UTF-8、ISO-8859-1、およびASCIIに基づく他のすべてのエンコーディングで動作します。

関連する問題