Java - получите японский язык из JTextField и сохраните в файл

Я пытаюсь получить японский ввод от JTextField (с помощью метода getText()) и сохранить его в файл. Я уверен, что он получает японский формат от JTextField, так как я могу append(), что String на JTextArea, и он будет в правильном японском формате.

Однако когда я пытаюсь записать в файл, это превращается в чепуху! Я попытался использовать OutputStreamWriter, созданный с помощью StandardCharsets.UTF_8, и я попытался использовать простой FileOutputStream, где я отправляю байты от вызова getBytes(StandardCharsets.UTF_8) в строке. В обоих случаях результирующий файл выглядит примерно так:

日本語�難������学����ら�日本��む

Естественно, я этого не хочу. Кто-нибудь знает, в чем может быть проблема?

японский char не является полностью частью UTF-8 std, они закодированы в UTF-16, попробуйте изменить свой набор символов и убедитесь, что вы используете для чтения файла, поддерживающего этот формат

Arnault Le Prévost-Corvellec 17.12.2018 07:59
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
101
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я почти уверен, что вы создаете файл с ISO-8859-1 вместо UTF-8. Я также предполагаю, что вы используете Eclipse, из-за ваших предыдущих вопросов.

Измените настройки вашего рабочего пространства

Окно -> Настройки -> Общие -> Рабочая область: UTF-8

Кодировка по умолчанию для всех типов контента

TestClass

Это класс, который я использовал для проверки теории

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: 路権ち点節ヤトツ限聞ド勇売質タカア

Другие вопросы по теме