Вы уверены, что видите какое-либо исключение, которое может быть выдано?Возможно, ваш сервлет не имеет разрешения на запись в файл.Я попытался бы отладить вашу программу, чтобы увидеть, что происходит при запуске этого кода.
То, что вы делаете, повредит многие символы, но вы все равно должны получить файл.
Когда я запускаю этот код, я получаю файл с
root.label.1130.2=??????
, который вы ожидаете получить.
Если я запускаю этот код
PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("root.properties", true), "UTF-8"));
String s = "root.label.1130.2=قسيمات";
pw.println(s);
pw.close();
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("root.properties"), "UTF-8"));
String line;
while ((line = br.readLine()) != null) {
for (int i = 0; i < line.length(); i++) {
char ch = line.charAt(i);
if (ch >= ' ' && ch < 127)
System.out.print(ch);
else
System.out.printf("\\u%04x", (int) ch);
}
System.out.println();
}
печатаетниже показано, что арабские символы не были искажены.
root.label.1130.2=\u0642\u0633\u064a\u0645\u0627\u062a
файл теперь содержит
root.label.1130.2=قسيمات
, как и ожидалось.