Кодировка UTF-8, UTF-16 в Java

228
08 декабря 2017, 04:12

Хочу вывести греческую букву U (https://unicode-table.com/en/01AF/) - получаю знаки вопроса. Вывожу как System.out.println('\uC6AF');. Пробовал и UTF-8 и UTF-16 и с помощью chcp - ничего не помогает. Как правильно работать с Unicode?

Answer 1

Внимательнее читайте свою же ссылку

Там написано

Unicode number U+01AF

то есть в Java надо написать

System.out.println('\u01AF');

Чтобы выводилось в правильной кодировке - установите кодировку проекта UTF-8 в IDE

В IDEA это делается так: Settings - Editor - File Encodings

Примечание: Если есть проблема с кодировкой самой консоли, выводить можно в файл.

Полностью код выглядит так:

import java.io.FileOutputStream;
import java.io.IOException;
public class Main {
    public static void main(String[] args) throws IOException {
        // "ISO-8859-1" - западноевропейские языки
        // "windows-1251" - стандартная Windows (русская)
        // "UTF-8" - юникод
        String systemEncoding = "UTF-8";
        String text =
                '\u01AF' + " - Latin Capital Letter U with Horn\r\n" +
                '\u0168' + " - Latin Capital Letter U with Tilde\r\n" +
                '\u0055' + " - Latin Capital Letter U\r\n";
        // вывод в консоль
        System.out.printf(text, systemEncoding);
        // вывод в файл
        FileOutputStream fileOutputStream =
                new FileOutputStream("types_of_u_letters.txt", false);
        fileOutputStream.write(text.getBytes(systemEncoding));
    }
}
Answer 2

Скорее всего потому, что буква 'U' имеет кодировку 0055. Смотрите актуальную версию таблицы юникод, например здесь: https://unicode-table.com/ru/#control-character Соответственно, вывод этой буквы через юникод будет такой: System.out.println("\u0055");

READ ALSO
SSLSocket подключение к серверу

SSLSocket подключение к серверу

Из своего Android-приложения подключаюсь к севреру через обычный SocketНо сервер может работать также с шифрованием

200
Хороший мануал для Spring (Boot + Jpa + Mvc + Web + Security) + Primefaces

Хороший мануал для Spring (Boot + Jpa + Mvc + Web + Security) + Primefaces

Да я искал, много искал и долго)

191
Как изменять view элементы из класса унаследованного AsyncTask'ом

Как изменять view элементы из класса унаследованного AsyncTask'ом

Также попрошу проанализировать код и сказать что в нём можно было бы улучшитьСпасибо

255
Ошибка чтения/записи при работе с файлом(Java EE)

Ошибка чтения/записи при работе с файлом(Java EE)

Добрый день, возникла очень не понятная ошибка

208