Локализация в моде

Версия Minecraft
1.16.5
API
Forge
Беру текст из файла, вывожу в игру. В итоге все русские символы превращаются в каракули.

public void onChat(ClientChatReceivedEvent ev) throws Exception { String prov = ev.getMessage().getString(); BufferedReader br; br = new BufferedReader(new FileReader("C:/Users/1/AppData/Roaming/.minecraft/config/nicks.toml")); if(prov.startsWith("/xui")) { String msg; this.mc.player.sendMessage(new StringTextComponent(TextFormatting.YELLOW + "Список ключевых слов:"), null); while ((msg = br.readLine()) != null) { this.mc.player.sendMessage(new StringTextComponent(TextFormatting.YELLOW + "- " + msg), null); } }

Что выводится в игру:1712931513270.png


Что находится в файле: 1712931531910.png
 
Решение
Когда создаешь объект BufferedReader, тыкни ему в параметр не FileReader, а InputStreamReader
у него второй параметр есть текстовый, это в какой кодировке он будет считывать, пихни "UTF-8"
я гружу так:
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(path), "UTF-8"));
Но вообще, ты делаешь какой то лютый пиздец, лучше закешируй данные из файла куда нибудь в память, чтобы не открывать каждый раз поток чтения, ну и не забудь закрыть за собой поток
1,203
31
185
Когда создаешь объект BufferedReader, тыкни ему в параметр не FileReader, а InputStreamReader
у него второй параметр есть текстовый, это в какой кодировке он будет считывать, пихни "UTF-8"
я гружу так:
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(path), "UTF-8"));
Но вообще, ты делаешь какой то лютый пиздец, лучше закешируй данные из файла куда нибудь в память, чтобы не открывать каждый раз поток чтения, ну и не забудь закрыть за собой поток
 
Сверху