コンパイルのjavaソースファイルを符号化されたとして"UTF-8"?
-
19-09-2019 - |
質問
ァ私のJavaソースファイルを指定するのでエンコーディングタイプとしてUTF-8を使用メモ帳、デフォルトでメモ帳のエンコーディングタイプはANSIしたコンパイルでの使用:
javac -encoding "UTF-8" One.java
そのたエラーメッセージ"
One.java:1: illegal character: \65279
?public class One {
^
1 error
する他に方法はないのでコンパイルす。
こちらのソース:
public class One {
public static void main( String[] args ){
System.out.println("HI");
}
}
解決
ファイル は 読み込まれるUTF-8として、それ以外の文字の値を"65279"から表示されます。 javac
期待をソースコードするプラットフォームのデフォルトエンコーディングによると、 の javac
文書:
の場合 エンコーディング 指定しないプラットフォームのデフォルトコンバータを使用します。
小数65279は六角レンチFEFFの Unicodeのバイト順マーク(BOM).なUTF-8でUTF-8の常として符号化されるオクテットストリームに持っていないので、endiannessます。
メモ帳が好きでスティック部品表ユーザーが外出中であっても必要なものがあんのように発見した。いるその他の指摘の通り、メモ帳ではない非常に良いテキストエディター切り替えを別のテキストエディタでほぼ確実に解決問題です。
他のヒント
メモ帳++でファイルを開き、エンコーディングを選択 - > BOMなしUTF-8に変換します。
。これはテキストエディタの問題ではありません、それはのjavacでの問題です! Unicodeの仕様はBOMがUTF-8でoptionnalであると言い、それは禁断のだと言うしません! BOMができる場合、javacは、それを処理するために持っていますが、それはしていません。実際には、UTF-8のファイルにBOMを使用すると、Unicodeのコード化されたファイルからANSIコード化されたファイルを区別するために役立ちます。
BOMを除去する提案された解決策は、唯一の回避策はなく、適切な解決策である。
このバグレポートは、この「問題」が固定されることはありませんことを示しています:ます。http:// bugs.java.com/view_bug.do?bug_id=4508058する
このスレッドは、「javacのBOM」検索のトップ2のGoogleの結果であるので、は、私は将来の読者のために、ここにこれを残している。
javac -encoding UTF8 One.java
を試してみてください。
引用符なしで、それはUTF8です、ノーダッシュます。
のために、このフォーラムのスレッドを参照してください。下記参照 例えば、優しくして、プログラム(テルグ語)
プログラム(UnicodeEx.java)
class UnicodeEx {
public static void main(String[] args) {
double ఎత్తు = 10;
double వెడల్పు = 25;
double దీర్ఘ_చతురస్ర_వైశాల్యం;
System.out.println("The Value of Height = "+ఎత్తు+" and Width = "+వెడల్పు+"\n");
దీర్ఘ_చతురస్ర_వైశాల్యం = ఎత్తు * వెడల్పు;
System.out.println("Area of Rectangle = "+దీర్ఘ_చతురస్ర_వైశాల్యం);
}
}
このプログラムを保存して"UnicodeEx.java"と変更コードを"unicode"
**コンパイル**
javac-エンコード"unicode"UnicodeEx.java
実行方法
java UnicodeEx
の価値を高=10.0幅=25.0
地域の矩形=250.0
私は、これは非常に古いスレッドですけど、私はPHPと同様の問題を経験していたの代わりに、JavaとGoogleがここに連れて行ってくれました。私は(ないプレーンなメモ帳)++メモ帳にPHPを書いて、余分な白い線が、私は、ファイルを含めると呼ばれるたびに登場していることに気づきました。 Firebugのは、それらの余分ラインで65279文字があったことを示しました。
実際にメインのPHPファイルと含まれているファイルの両方がUTF-8でエンコードされました。しかし、メモ帳++はまた、「UTF-8 BOMなし」としてエンコードするオプションがあります。これは私の問題を解決します。
ボトムライン:あなたはBOMなしUTF-8を使用するようにエディタに指示しない限り、UTF8エンコーディングがあちこちでこの余分なBOM文字を挿入
でもメモ帳で編集し、ここで正常に動作します。この話の教訓は、メモ帳を使用していないされています。メモ帳が挿入または喜んであなたから隠しているいずれかのことをそこに印刷できない文字はおそらくあります。
私は同じ問題を抱えていました。それを解決するには、バイナリエディタでファイルを開き、ファイルの先頭に三つの「見えない」バイトを見つけました。私はそれらを除去し、コンパイルが働いています。
開くファイルとWordPadその他のエディタ以外のメモ帳です。
"名前をつけて保存"を選択してテキストドキュメント-MS-DOSフォーマット
再開のプロジェクト
の既存の回答ソリューションのためのLinuxユーザー:
のBOMすべての .java
ファイルを一度に、ソースディレクトリの実行
find -iregex '.*\.java' -type f -print0 | xargs -0 dos2unix
が必要で find
, xargs
や dos2unix
設置する、含まれるべき多くの分布図です。最初の声明を見ることが .java
ファイルの現在のディレクトリを再帰的には、第一に変換しますそれぞれの dos2unix
ツールの対象となる変換する線の終わりのものを削除しますBOM.
線の終わりに変換して無効になることは間違いありつけることのできるLinux \n
フォーマットはLinuxの場合の設定バージョン管理が正しくなることを警告されませることとしていただいた場合の場合ではない。
のIntelliJアイデア([設定]> [編集]> [ファイルエンコーディング)で、プロジェクトのエンコーディングは、「窓-1256」でした。だから私はUTF8に静的な文字列を変換するには、次のコードを使用します。
protected String persianString(String persianStirng) throws UnsupportedEncodingException {
return new String(persianStirng.getBytes("windows-1256"), "UTF-8");
}
は、今、それはOKです! ファイルのエンコーディングによっては、変更する必要があり、適切なものに「窓-1256」