Mavenプロジェクトの.javaファイルのソースエンコーディングは、Subversionで主にASCIIに格納され、いくつかのファイルはUTF-8です。Maven Javaプロジェクトでのファイルのソースコード
私はこれらのファイルがUTF-8であると考えていたと思います。 pomファイルでは、ソースエンコーディングはUTF-8として指定されています。
今回のビルドでは特に、SonarQubeの解析がISO-8859の.javaファイルで失敗し、変数に特殊文字が含まれていると失敗します。特殊文字を使うのは良い考えではありませんが、Javaファイルには一貫性のある(UTF-8)エンコーディングを使用しないでください。
大部分がASCIIで、一部のみがUTF-8であることは関係ありませんか?それは重要な考えですか?
私はこれらのファイルがどのようにASCIIエンコーディングで終わるか理解していません。 SublimeTextファイルなどのIDEまたはエディタを使用すると、UTF-8として終了します。
ASCII MS Windowsでノートパッドを使用する場合にのみ表示されます。 Java開発者は通常、プログラミングのためにそれを使用しません。
ソースファイルをUTF-8を使用するように変更する必要がありますか?それともそれは問題にならないかもしれませんし、そのまま残すことができますか?
例として、 MS Windowsを使用するSublimeTextとNotepad.exeを使用して1つのファイルを使用して1つのファイルを作成します。私はそれらのファイルにテキスト1234Ï
を入れます。テキストには、2つの点を持つ特殊文字Iが含まれています。
私はfile
[email protected]:/tmp/iconv$ file sublimtext.txt
sublimtext.txt: UTF-8 Unicode (with BOM) text, with no line terminators
[email protected]:/tmp/iconv$ file notepad.txt
notepad.txt: ISO-8859 text, with no line terminators
[email protected]:/tmp/iconv$
を使用してLinux上でこれらのファイルを見るときに、これは、メモ帳に関係なく、内容のISO-8859としてファイルを保存した示しています。私はiconv
[email protected]:/tmp/iconv$ iconv -f UTF-8 notepad.txt -o /dev/null
iconv: incomplete character or shift sequence at end of buffer
[email protected]:/tmp/iconv$ iconv -f UTF-8 sublimtext.txt -o /dev/null
[email protected]:/tmp/iconv$
を使用してファイルをチェックすると、私はSublimeTextを使用してファイルnotepad.txt
を開き、保存することができ、エンコーディングはまだISO-8859として表示されます。
文字は両方のファイルで正しく表示されます。これは、エディタがファイルの内容からエンコーディングを決定しようとするという考え方をサポートしています。しかし、他のどこかのファイルはISO-8859としてマークされ、認識されています。
は、私がメッセージ不完全な文字がなくなっているので、変換が成功したiconv
[email protected]:/tmp/iconv$ iconv -f ISO-8859-15 -t UTF-8 notepad.txt > notepad-utf8.txt
[email protected]:/tmp/iconv$ file notepad-utf8.txt
notepad-utf8.txt: UTF-8 Unicode text, with no line terminators
[email protected]:/tmp/iconv$
[email protected]:/tmp/iconv$ iconv -f UTF-8 notepad-utf8.txt -o /dev/null
を使用してエンコーディングを変更することができます。
[UTF-8](https://en.wikipedia.org/wiki/UTF-8)はASCIIと互換性があります。 ASCII文字を含むファイルも有効なUTF-8ファイルです。 (これが、UTF-8がほぼすべてのものに最適な理由の1つです)。また、文字エンコーディングはファイル自体のプロパティではありません。ファイルの内容から検出されます。 – Jesper
いくつかの通常の文字でSublimeTextを使ってファイルを作成すると、UTF-8として表示されます。メモ帳でMS Windows上で同じ文字で作成されたファイルは、ISO-8859として表示されます。 – onknows
これは、編集者がエンコーディングが何であるかを推測していて、エンコーディングの1つに合うと思われるものを選択するためです。 「通常のテキスト」は、ASCII、UTF-8またはISO-8859-1と同様に有効に解釈できます。エディタは、適切なエンコーディングが何であるかというエディタの推測に依存します。異なるエディタでは、コンテンツからのエンコーディングを推測するルールが異なる場合があります。 – Jesper