see: Properties#store()
ストリームは、ISO 8859-1文字エンコーディングを使用して書き込まれる。
てことなので、game.cfgファイルはISO 8859-1
でエンコーディングされています。
どうせソースを添付するなら、せめて簡単に実行できるようなものにしてほしいものです。
java
1import java.io.*;
2import java.util.*;
3public class xxHoge {
4 public static void main(String[] args) throws Exception {
5 try (FileOutputStream f = new FileOutputStream( "game.cfg");
6 BufferedOutputStream b = new BufferedOutputStream(f)) {
7 Properties prop = new Properties();
8 prop.setProperty("name", "あいうえお");
9 prop.store(b, "");
10 }
11 }
12}
13//#
14//#Sat Aug 08 21:19:09 JST 2020
15//name=\u3042\u3044\u3046\u3048\u304A
A-pZさんの回答にある、FileWriterはJava11から使えますね。
A-pZさんのを参考に、Java11以前向けに書き直してみました。store/loadでいけますね。失礼。
java
1import java.io.*;
2import java.nio.charset.Charset;
3import java.util.Properties;
4
5public class xxHoge {
6 public static void main(String[] args) throws Exception {
7 Properties prop = new Properties();
8 prop.setProperty("name", "あいうえお");
9 prop.put("sampleValue", "日本語どうでしょう");
10 System.out.println(prop);
11
12 final File file = new File("hoge.properties");
13 final Charset charset = Charset.forName("utf-8");
14 System.out.println(file);
15 prop.store(new OutputStreamWriter(new FileOutputStream(file), charset), "");
16
17 final Properties hoge = new Properties();
18 hoge.load(new InputStreamReader(new FileInputStream(file), charset));
19 System.out.println(hoge);
20 System.out.println(prop.equals(hoge));
21 }
22}
23//{name=あいうえお, sampleValue=日本語どうでしょう}
24//hoge.properties
25//{name=あいうえお, sampleValue=日本語どうでしょう}
26//true
$ cat hoge.properties
#
#Tue Aug 11 16:48:24 JST 2020
name=あいうえお
sampleValue=日本語どうでしょう