[解決済み] Java のデフォルト文字エンコーディングの設定
2022-03-24 19:09:52
質問
JVM (1.5.x) で使用されるデフォルトの文字エンコードをプログラムで適切に設定するにはどうすればよいですか?
私は、以下のことを読みました。
-Dfile.encoding=whatever
は、古いJVMのために行くための方法であった。私は、理由はわかりませんが、そのような贅沢はしていません。
試してみました。
System.setProperty("file.encoding", "UTF-8");
そして、プロパティは設定されますが、最終的な
getBytes
の呼び出しがUTF8を使用するようになりました。
System.setProperty("file.encoding", "UTF-8");
byte inbytes[] = new byte[1024];
FileInputStream fis = new FileInputStream("response.txt");
fis.read(inbytes);
FileOutputStream fos = new FileOutputStream("response-2.txt");
String in = new String(inbytes, "UTF8");
fos.write(in.getBytes());
解決方法は?
残念ながら
file.encoding
プロパティはJVMの起動時に指定する必要があります。メイン・メソッドが入力されるまでに
String.getBytes()
のデフォルトコンストラクタは
InputStreamReader
と
OutputStreamWriter
は永久にキャッシュされます。
として
エドワード・グレック氏が指摘する。
このような特殊なケースでは、環境変数
JAVA_TOOL_OPTIONS
できる
がありますが、通常はこのように指定します。
java -Dfile.encoding=UTF-8 … com.x.Main
Charset.defaultCharset()
への変更が反映されます。
file.encoding
プロパティがありますが、コアJavaライブラリの中でデフォルトの文字エンコーディングを決定する必要があるコードのほとんどは、このメカニズムを使用していません。
エンコードやデコードの際に
file.encoding
プロパティまたは
Charset.defaultCharset()
で現在のデフォルトエンコーディングを調べ、 適切なメソッドやコンストラクタのオーバーロードでそれを指定します。
関連
-
eclipse で「アクセス制限: タイプ 'HttpServer' は API ではありません」というプロンプトが表示される。
-
スレッド "main" で例外発生 java.lang.ArrayIndexOutOfBoundsException: 4 at text.Division.main(Divisi
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] C#で文字列のエンコーディングを手動で指定せずに、一貫性のあるバイト表現を得るには?
-
[解決済み] Javaはパラメータのデフォルト値をサポートしていますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Java エラー報告 スレッド "main" での例外 java.util.NoSuchElementException
-
springboot project MIMEタイプ text/htmlで転送された静的ファイルを読み込む。
-
エラーが報告されました。リソースの読み込みに失敗しました:サーバーは500(内部サーバーエラー)のステータスで応答しました。
-
this()の呼び出しはコンストラクタ本体の最初の文でなければならない 例外解決と原因分析
-
JavaMailのメール送信が失敗するケースとその説明の分析
-
Eclipseでプロジェクトエクスプローラービューとパッケージエクスプローラービューを使う
-
サーブレットクラスのインスタンス化エラーの解決法
-
スレッド "main" で例外発生 java.lang.ArrayIndexOutOfBoundsException: 0 at One1.main(One1.java:3)
-
[オリジナル】java学習ノート【II】よくあるエラー クラスパス上のクラスファイルが見つからない、またはアクセスできない場合
-
javax.net.ssl.SSLException: 読み取りエラー: ssl=0xdeae5100: システムコール中の I/O エラー、接続 res