プロが教える店舗&オフィスのセキュリティ対策術

java jdk-12 , windows10 , Tera Pad でコンパイルしようとしていますが、

 1つ目、

  エラー: この文字(0xEF)は、エンコーディングwindows-31jにマップできません

のエラーが出てコンパイルが通りません。 

ネットで調べて -encoding UTF-8 を追加してコンパイルしたら通ったのですが、次に

 2つ目、

  エラー: '\ufeff'は不正な文字です

というエラーが出ます。

UTF-8のBOMが原因のようですが、ネットで調べた方法をいくつか試してみても

コンパイルが通りません。

どのようにしたらよいでしょうか?


試した方法: UTF-8N にする , 一度Shift-Jisに変換してみる
$ nkf --overwrite --oc=UTF-8 ($は内部コマンドまたは...認識されませんと出ます)
ネット上のBOMをスキップする方法というソース

質問者からの補足コメント

  • 皆さまが指摘された点を試しましたところ半角英数の出力でのみコンパイルが行えるようになりました。

    System.out.println("全角"); としておりました。

    なぜ、日本語出力ができないかはわかりませんが、今は日本語出力を急ぎませんのでとりあえず解決いたしました。

    またこの問題が解決できないようであば再度、質問を投稿させていただきます。

      補足日時:2019/04/03 11:01

A 回答 (3件)

>エラー: この文字(0xEF)は、エンコーディングwindows-31jにマップできません



日本語環境のWindowsで、普通に起動したコマンドプロンプトはShiftJISなんじゃないですかね?
https://qiita.com/user0/items/a9116acc7bd7b70ecfb0

TeraPadで保存時の文字コードをShiftJISにしたらどうなるでしょう?

とは言え…JavaならUTF-8とかでしょうかねぇ。
先程掲示したURLの方法でコードページをUTF-8にしてみてはどうでしょうか。

>$ nkf --overwrite --oc=UTF-8 ($は内部コマンドまたは...認識されませんと出ます)

Windowsには標準でnkfは入っていないと思いますけど、そこのところどうなんです?
vectorとかからDLして入れたんですか?
そして…コマンド入力時にプロンプトは入力しませんよ?
# Linuxとかのシェルのプロンプトだと思いますが…。
    • good
    • 0
この回答へのお礼

まことにありがとうございます。

Shift-JISに変更することはうまくいきませんでした。

chcpによってプロンプトの文字コードを変えることで少し変化がありましたが次のように表示されるようになりました。

sample.java:1: G[: ̕(0xEF)́AGR[fBOwindows-31jɃ}bvł܂

実行ファイルは生成されることのないままです。

同じように文字化けしていたgccによるC++の他のソースが綺麗に日本語で表示されるようになりましたので少し進展したと思います。

ありがとうございました、また別件にて質問致します。

$nkf --over...はググったことを試しただけでしたので詳しくはわかっておりませんでした。

お礼日時:2019/04/02 21:30

同じくTeraPad使ったことはありませんが…


BOMなし保存は可能なはずですが。
http://creating-homepage.com/archives/97

内容変更なしで上書き保存しようとした場合、BOMなしにできない可能性もあるんじゃないでしょうかね。
別のファイル名にするとか、意味のない半角スペースを追加して変更ありとして保存するとかでしょうかねぇ。

日本語なしのファイルだったらBOMとか付かないかも知れませんが。
# いわゆるASCIIのみ。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2019/04/03 10:51

TeraPad は使ってないけど, そっちで「BOM を付けない」設定にできないの?

    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2019/04/03 10:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!