Я пытаюсь получить японский ввод от JTextField (с помощью метода getText()) и сохранить его в файл. Я уверен, что он получает японский формат от JTextField, так как я могу append(), что String на JTextArea, и он будет в правильном японском формате.
Однако когда я пытаюсь записать в файл, это превращается в чепуху! Я попытался использовать OutputStreamWriter, созданный с помощью StandardCharsets.UTF_8, и я попытался использовать простой FileOutputStream, где я отправляю байты от вызова getBytes(StandardCharsets.UTF_8) в строке. В обоих случаях результирующий файл выглядит примерно так:
日本語ã�¯é›£ã�—ã�„ã�¨æ€�ã�†ï¼�å¦ã�³ã�Ÿã�„ã�ªã‚‰ã€�日本ã�§ä½�ã‚€
Естественно, я этого не хочу. Кто-нибудь знает, в чем может быть проблема?




Я почти уверен, что вы создаете файл с ISO-8859-1 вместо UTF-8. Я также предполагаю, что вы используете Eclipse, из-за ваших предыдущих вопросов.
Окно -> Настройки -> Общие -> Рабочая область: UTF-8
Это класс, который я использовал для проверки теории
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
public class test {
public static void main(String[] args) throws IOException {
File fileDir = new File("test.txt");
String japanese = "路権ち点節ヤトツ限聞ド勇売質タカア";
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileDir)));
out.append(japanese);
System.out.println(japanese);
out.flush();
out.close();
}
}
Выходной файлISO: 路権ã¡ç¹ç¯ã¤ããéèãå売質ã¿ã«ã¢
Выходной файлUTF8: 路権ち点節ヤトツ限聞ド勇売質タカア
японский char не является полностью частью UTF-8 std, они закодированы в UTF-16, попробуйте изменить свой набор символов и убедитесь, что вы используете для чтения файла, поддерживающего этот формат