これがプログラミングの問題かどうかは不明です。私はそれを疑うようになりました...しかし、その後、問題のJavaプログラム(実行可能なjar)をCygwinの代わりにWindowsコンソールで実行しました。うまく動いていました。したがって、以下はCygwinコンソールにのみ適用されます。Cygwinのエンコードが難しい
フランス語のテキストを処理しています。アクセント付きの文字が印刷されると(System.out
)、代わりに「ハッシュボックス」の一種が印刷されます。私はこれについてもう一つの質問を見ましたが、解決策や適切な説明はありませんでした。
アクセント付きの文字を入力すると、これらは正しく読み込まれません(Java System.in
)。 "bénéfice"は "bénéfice"として(正しくエンコーディングを処理しているログに)出力されます。
困ったことは(おそらく)コンソールに「bénéfice」と入力できるということです。 Deja Vu Sans MonoはUnicodeをうまく処理することを目的としていますが、私は理解しています。だから...これは、JavaのSystem.in
とSystem.out
のストリームと関係がありますか?
これは疑いの余地なく、Windowsプラットフォーム上のCygwinです(Windows以外のOSでCygwinを使用する人は誰ですか)。
私は "ロケール"と文字セットとフォントを、オプション - >テキストに変更しようとしました。これらのボックスは変更されません。
フォント:デジャヴなきモノ
ロケール:表すen_GB
文字セット:私は行くUTF-8
コマンドプロンプトで、
$ locale
瞬間の設定で はデフォルトのものです
私は
LANG=en_GB.UTF-8
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_ALL=
私は何をすべきか分かっていますか?
CygwinはもちろんWindows用です。 Javaはcygwinアプリケーションではないため、cygwinのロケール設定を無視する可能性があります。 – matzeri
ありがとうございます。だから実際には、バイトとエンコーディングと考えられる解決策の意味ではどういうことでしょうか? Javaに特定のエンコーディングでストリームを送信させる方法はありますか?私は、エンコーディングは常に私を完全に困惑させたと告白します。 –
これはjavaインスタンスとcygwinコンソールで使用される文字セットの不一致の可能性が最も高いです。 java-instanceで使用されている文字エンコーディングをチェックする価値があります。 [この質問](http://stackoverflow.com/questions/2415597/java-how-to-detect-and-change-encoding-of-system-console)もこの問題を解決するのに役立つかもしれません。 – Paul