Японский символ меняется на мусор после записи в файл в Java - PullRequest
0 голосов
/ 05 июня 2019

Японские символы отображают фактическое содержимое, когда я читаю через объект inputStreamReader (только определяя закодированную кодировку), однако, когда я проверяю вывод физического файла, он содержит ненужный символ.У меня есть вопросы ниже, пожалуйста, помогите мне разобраться.

  1. Почему физический файл меняется на нежелательный?например: ¥ Ô¡¼ ¥ ¿¡¼¡¼ ¥ ¸ ¥ 硼 ¥ º открывается с помощью блокнота.Примечание: То же самое, когда я открываю кодировку настроек OpenOffice Calc, отображается фактический японский символ.

  2. При чтении с использованием inputStreamReader, если я указываю не кодированный символ, фактическое содержимое меняется на нежелательное.
    Например: �ԡ���������� 硼 �� Так что, согласно моему пониманию, кодированная кодировка и декодированная кодировка должны быть одинаковыми. *

Я проверил этот ответ, Преобразование строкового кодирования UTF-8 в SHIFT-JIS .

Но что мне нужно знать, так это предположить, что кодированный файл отличается при декодировании, если мы используем UTF-8, возможно ли отобразитьфактическое содержание.

    OutputStream os = new FileOutputStream("japanese.txt");
    OutputStreamWriter osw = new OutputStreamWriter(os, "EUC-JP");
    osw.write("ピーター・ジョーズ");
    osw.flush();
    osw.close();

    InputStream ir = new FileInputStream("japanese.txt");
    InputStreamReader isr = new InputStreamReader(ir, "EUC-JP");
    int i =isr.read();
    while(i!=-1) {
        System.out.print((char)i);
        i=isr.read();
    }
    isr.close();

кодирование и декодирование - (EUC-JP)

ピーター・ジョーズ

кодирование - EUC-JP: декодирование - UTF-8

�ԡ����������硼��
...