質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
NetBeans

NetBeansは Java、HTML5、PHP、C/C++のアプリケーションのフレームワーク、もしくは統合開発環境(NetBeans IDE)の両方を指します

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

2518閲覧

NetBeansでJavaの実行結果が文字化けする

kazumi_7

総合スコア21

NetBeans

NetBeansは Java、HTML5、PHP、C/C++のアプリケーションのフレームワーク、もしくは統合開発環境(NetBeans IDE)の両方を指します

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2023/09/14 02:58

編集2023/09/15 00:36

実現したいこと

文字化けを直して日本語が正常に表示されるようにしたい。

前提

Apache NetBeans IDE 19でJavaの勉強中です。
日本語化済み。

発生している問題・エラーメッセージ

Java

1System.out.println("ようこそ占いの館へ");

と入力して実行したところ

�悤�����肢�̊ق�

と表示されました。

試したこと

https://tigertaizo.hatenablog.com/entry/2017/06/29/181839
上記を参照に、ユーザー環境変数に「JAVA_TOOL_OPTIONS」を追加。
→出力ログ一行目に

Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8

と表示されるようになったものの変化なし。

http://1000k.github.io/2011/01/22/fixing-gable-in-netbeans/
上記を参照に、netbeans.confの「netbeans_default_options」ブロックに「-J-Dfile.encoding=UTF-8」を追加。
→こちらも変化なし。
リンク先にnetbeans_default_optionsブロックの全文が載っていますが、内容が違うのが疑問。(バージョンが違うため?)
なお、下の方に日本語フォントを指定の方法も書かれていますが、出力コンソールの最終行に

ビルド成功(合計時間: 10秒)

と表示されるので、フォントの問題ではないと思います。

補足情報(FW/ツールのバージョンなど)

OS:Windows 10 Pro 22H2 64bit
IDE:Apache NetBeans IDE 19

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jimbe

2023/09/14 03:41

java の出力文字コードは何でしょう。そして出力されるコンソールの文字コードは何ですか。
kazumi_7

2023/09/14 04:13

.javaはUTF-8で保存されていました。 コンソールの一行目に Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 と表示されるのでUTF-8になっていると思います。
jimbe

2023/09/14 05:11 編集

文字コードが関係することは三つあります。 1つ目は、java のソースコードの文字コードです。java エンジンは unicode で動きますので、例えばソースコードはシフトJISで書いてコンパイル時にunicodeに変換されてclassファイルになったりします。 2つ目は、javaが入出力する際の文字コードです。エンジンでunicodeで作られた文字列を画面やファイルに出力する際に(コードで指定されていなければ)システムのデフォルトの文字コード等に変換されます。 3つ目は、入出力先の文字コードです。java が2つ目で出力した文字列は、受け取る側も同じ文字コードとして扱わなければ正しく表示されません。例えばjavaがunicodeで出力していても受け取る側がシフトJISと思っていたらバケるでしょう。 1つ目・2つ目はutf-8として、3つ目はどうなっているでしょうか。 ↓の記事でのコマンドプロンプトのエンコーディングのことです。 実行環境のエンコーディングに合わせてプログラムを実行する https://www.javadrive.jp/start/encoding/index4.html
jimbe

2023/09/14 05:49 編集

>コンソールの一行目に >Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 >と表示される 状態で >System.out.println(System.getProperty("file.encoding")); を行ったのであれば、設定したものを表示しただけでは無いでしょうか。 IDE の設定か何かでコンソールの文字コードの設定等は無いのでしょうか。
kazumi_7

2023/09/14 08:20 編集

http://www.deftrash.com/blog/archives/2006/05/netbeans_1.html 2006年の古いバージョンでの設定箇所しか出てこず、自分が使っているバージョンでも見てみましたが該当項目はありませんでした……。 コンソールの文字コードでも検索してみましたが、解説している内容は見当たっていません。 (既に試した文字化けの直し方以外出て来ない)
kazumi_7

2023/09/14 08:49

ありがとうございます! ソフトのバージョン情報によると Java: 20.0.2; らしいので翻訳を頼りにFor Java 19 onwards, use this:の通り、netbeans.confに「-Dstdout.encoding=UTF-8」を追記したところ、netbeans自体が起動しなくなりました……。 netbeans.confの追記部分を削除すると起動するので、追記内容が原因だとは思うのですが。
quickquip

2023/09/14 10:07

OSの情報が一切ないです
jimbe

2023/09/14 11:08 編集

netbeans.conf に書くなら恐らく -J が必要でしょう。(プロジェクトのプロパティ > 実行 > VM オプション なら 不要) -J-Dstdout.encoding=UTF-8
kazumi_7

2023/09/15 00:37

quickquip様 ご指摘ありがとうございます。 Windowsの旨追記しました。
kazumi_7

2023/09/15 00:43

jimbe様 -J-Dstdout.encoding=UTF-8と追記してみました。 起動するようにはなりましたが、文字化けは直っていません……。
jimbe

2023/09/15 02:06

>文字化けは直っていません そうですか… いっそ正式な情報はともかく -J-Dstdout.encoding=MS932 とか -J-Dstdout.encoding=UTF-16 とか書けそうなのを試してみるとかはどうでしょう。
kazumi_7

2023/09/15 02:28

アドバイスありがとうございます。 -J-Dstdout.encoding=MS932 は変化なし。 -J-Dstdout.encoding=UTF-16 はVMオプションを書き換えると文字が消えました……。 (文章が表示されるはずの行が空白で、その下に「ビルド成功(合計時間: 0秒)」と表示される)
jimbe

2023/09/15 03:57

お作りになっているプロジェクトは Maven ですか? ant ですか? gradle ですか?
kazumi_7

2023/09/15 04:09

全く意識していなかったのですが、調べたところ、デフォルトでJava with Antを使用する設定になっているようなので、antだと思います。 https://saycon.co.jp/portal-for-newcomer/javase8/ide/netbeans/netbeans2 新規プロジェクトの作成は上記サイトを参考にしていて、図2.3 新規プロジェクトウィンドウと同じ画面を見た覚えがあります。
guest

回答1

0

ベストアンサー

NetBeans をインストールして色々試してみました。

プロジェクトの構成によって多少作業が異なるようです。

Gradle (File > New Project > java With Gradle > Java Application) で作成した場合、 etc/netbeans.confnetbeans_default_options-J-Dstdout.encoding=UTF-8 -J-Dstderr.encoding=UTF-8追加の後に、 Projects ツリーの :app > Build Scripts > build.gradle[project] を開いて

run { systemProperties = System.properties }

を追加してください。

Java With Ant や Java With Maven でプロジェクトを作成した場合は、プロジェクトを選択して File > Project Properties[プロジェクト名] (もしくはプロジェクトを右クリック > Properties) で開くダイアログの Categories ツリー の Run を選択すると、右に VM Options というテキストボックスがありますので、そこに

-Dstdout.encoding=UTF-8 -Dstderr.encoding=UTF-8

と記入してください。

投稿2023/09/15 04:22

編集2023/09/15 04:50
jimbe

総合スコア13168

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kazumi_7

2023/09/15 04:38

ありがとうございます!文字化けせず無事に表示されました!! そんな情報が全く出て来なかったのでもうお手上げ状態でした……。 長々とお付き合い頂きありがとうございました!
jimbe

2023/09/15 05:03

昔は Gradle/Ant/Maven 等はビルドツールの名前の通りビルド(コンパイル・リンク)が仕事でしたが、今ではプログラムの実行(java エンジンの呼び出し)もこれらが行うようになっています。 netbeans.conf の設定は NetBeans に対するものですので、実行時はそれが java エンジンに伝わらないといけなかったのですが、間にいるビルドツールが壁になってしまっていた感じです。 回答は、 Gradle の方は NetBeans の設定を Gradle が受け取って java エンジンに渡すよう設定をするものであり、 Ant/Maven の方は NetBeans の設定に関係無く Ant/Maven に対して「この設定を java エンジンに渡しなさい」とするものです。 なお、試されたという「JAVA_TOOL_OPTIONS 環境変数」ですが、こちらも変数名を変えて -Dstdout.encoding=UTF-8 -Dstderr.encoding=UTF-8 とすれば (Gradle/Ant/Maven 関係無く)動作すると思います。(未確認。) ですが環境変数の設定はそのパソコンで動く全ての java に影響しますので、 NetBeans19 ではそれで良くても何か他のことで java を動かした時に逆にこの設定の所為で文字化けするかもしれません。
kazumi_7

2023/09/27 02:01

な、なるほど……? Gradle/Ant/Maven自体を今回初めて知ったのですが、ビルドツールなんですね……。 netbeans.conf→ビルドツール→Javaエンジン とあり、confに書き込んでも変化しなかったのは、間のビルドツールで遮断されていたという事でしょうか。 勉強し始めでまだまだ呑み込めていませんが……。 全てのJavaという事なので、JAVA_TOOL_OPTIONS 環境変数はちょっとやめておきます。 (クラッシュしたeclipseがまだインストールしたまま)
jimbe

2023/09/27 17:30 編集

こういった世界的に使用されるツールの情報は、日本語だけでなく(よりユーザの多い=情報も多い)英語の記事が引っ掛かるような検索もしてみると良いです。 検索ワードを半角英数字スペースだけにしてみたり、英語圏の検索サイト(google.com とか)でやってみるとかです。 回答の情報もその様に探しました。(ま、大抵引っ掛かるのは stackoverflow.com ですけど(^^ )
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問