Кодировки и класс nio.Charset

Рейтинг: 2Ответов: 1Опубликовано: 04.12.2014

Насколько я понял, есть кодировки - это способ кодирования символов, такие как Unicode, они же UTF-8, UTF-16.

Также есть кодовые страницы - таблицы, в которых размещены символы, такие как ISO-8859-1, IBM-819.

И есть класс Charset.

Растолкуйте, какая взаимосвязь и что делает этот класс, и поправьте, если что неправильно.

Да и таблица символов есть своя Unicode, так это получается и таблица, и кодировка уже?

Или я могу предположить, что есть таблица Unicode со списком всех символов, которые он может кодировать. Но все символы, что в этом списке Unicode, разбиты на множество кодовых страниц. И Java, например, не содержит весь ассортимент этих страниц, а только какие-то там по умолчанию. И если мы хотим добавить или оперировать этими кодовыми страницами, то мы должны использовать класс Charset, правильно?
Т.е. получается, что Charset - это и есть кодовая страница?

Ответы

▲ 3Принят

Unicode - это таблица символов (не кодировка), в которой каждому символу присвоен номер.

Кодировка - это способ представления каждого символа в машинном виде (т.е. какой последовательностью байтов кодируется символ). Например UTF-8 - это кодировка.

Подробнее о терминах можно прочитать в статье Кодирование символов: Основные понятия.

Класс Charset позволяет оперировать текстом в определенной пользователем кодировке, а именно кодировать строки в набор байтов в заданной кодировке и декодировать набор байтов из заданной кодировки в строки.