Charset для немецких заглавных букв - PullRequest
2 голосов
/ 03 июля 2019

Я пытаюсь записать в файл символы немецкого языка, но возникает проблема с заглавными буквами, например ... 1002 *.

Символы в нижнем регистре написаны хорошо.Я использую кодировку ISO_8859_1 для моего OutputStreamWriter.

OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream(fileName), StandardCharsets.ISO_8859_1);

Когда я пишу в символ файла " Ü ", я ожидаю увидеть " Ü ", но я вижу " / xc3"

Ответы [ 2 ]

4 голосов
/ 03 июля 2019

Я попробовал следующий пример, и он работает нормально:

package com.test;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.nio.charset.StandardCharsets;

public class Test {

    public static void main(String[] args) throws IOException {
        //OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream(fileName), StandardCharsets.ISO_8859_1);

        OutputStream outputStream = new FileOutputStream("c:\\output.txt");
        OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream,
                                                                       StandardCharsets.ISO_8859_1);

        outputStreamWriter.write("When it is not possible to use the umlauts (for example, when using a restricted character set) the characters Ä, Ö, Ü, ä, ö, ü should be transcribed as Ae, Oe, Ue, ae, oe, ue respectively, following the earlier postvocalic-e convention; simply using the base vowel (e.g. u instead of ü) would be wrong and misleading. However, such transcription should be avoided if possible, especially with names. Names often exist in different variants, such as \"Müller\" and \"Mueller\", and with such transcriptions in use one could not work out the correct spelling of the name.");

        outputStreamWriter.close();

    }

}

Вывод: Когда невозможно использовать умляуты (например, при использовании ограниченного набора символов)символы Ä, Ö, Ü, ä, ö, ü должны быть расшифрованы как Ae, Oe, Ue, ae, oe, ue, соответственно, в соответствии с более ранним соглашением postvocalic-e;простое использование основного гласного (например, u вместо ü) было бы неправильным и вводящим в заблуждение.Однако по возможности следует избегать такой транскрипции, особенно с именами.Имена часто существуют в разных вариантах, таких как «Мюллер» и «Мюллер», и при использовании таких транскрипций невозможно определить правильное написание имени.

Дайте мне знать, если словаправильно кодировать или нет, так как я не могу читать по-немецки.

0 голосов
/ 05 июля 2019

Кажется, что ваш исходный файл Java (если используются литералы строк) или текстовый файл ввода или (?) Закодирован в UTF-8, но компилятор, который его читает, - нет. Во всех случаях у вас должен быть компилятор Java для чтения исходных файлов Java с кодировкой символов, с которой они были написаны. (На самом деле это относится к каждому человеку или программе, читающим любой текстовый файл.)

javac --help
javac … -encoding UTF-8 …

Вероятно, лучше всего использовать одну и ту же кодировку исходного файла Java во всем проекте. Если ваш редактор / IDE имеет систему проектов, настройте ее для выбранной кодировки, и она передаст правильную кодировку компилятору. UTF-8 - отличный выбор.

Если вы читаете входные данные откуда-то, убедитесь, что код использует кодировку, использованную программой записи файлов.


С другой стороны, текстовые файлы предназначены для экспертов, поскольку они требуют выбора кодировки символов, передачи кодировки символов читателям и каждому читателю, использующему эту кодировку символов. Он работает хорошо для некоторых специализированных типов текстовых файлов, таких как файлы конфигурации или свойств, но не для пользовательских / пользовательских файлов. Некоторые специализированные типы текстовых файлов, которые хороши для данных: JSON и XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...