Java charset utf 8 class

Class Charset

Именованное отображение между последовательностями шестнадцатиразрядных единиц кода Unicode и последовательностями байтов. Этот класс определяет методы для создания декодеров и кодировщиков и для получения различных имен, связанных с кодировкой. Экземпляры этого класса неизменяемы.

Этот класс также определяет статические методы для проверки того, поддерживается ли конкретная кодировка, для поиска экземпляров кодировки по имени и для построения карты, которая содержит все кодировки, для которых поддержка доступна в текущей виртуальной машине Java. Поддержка новых кодировок может быть добавлена ​​через интерфейс поставщика услуг, определенный в классе CharsetProvider .

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

Charset names

Названия шаровых наборов именуются строками,состоящими из следующих символов:

  • Заглавные буквы от ‘A’ до ‘Z’ (от ‘\u0041’ до ‘\u005a’ ),
  • Строчные буквы от ‘a’ до ‘z’ ( ‘\u0061’ через ‘\u007a’ ),
  • Цифры от ‘0’ до ‘9’ (от ‘\u0030’ до ‘\u0039’ ),
  • Знак дефиса ‘-‘ ( ‘\u002d’ , ДЕФИС-МИНУС ),
  • Знак плюса ‘+’ ( ‘\u002b’ , ЗНАК ПЛЮС ),
  • Знак периода ‘.’ ( ‘\u002e’ , ПОЛНАЯ ОСТАНОВКА ),
  • Символ двоеточия ‘:’ ( ‘\u003a’ , COLON ) и
  • Символ подчеркивания ‘_’ ( ‘\u005f’ , низкая линия ).

У каждого шарселя есть canonical name а также может иметь один или несколько aliases . Каноническое имя возвращается методом name этого класса. Канонические имена по соглашению обычно пишутся в верхнем регистре. Псевдонимы набора символов возвращаются методом aliases .

Некоторые кодировки имеют историческое название , определенное для совместимости с предыдущими версиями платформы Java. Историческое название кодировки — это каноническое имя или один из псевдонимов. Историческое название возвращается в getEncoding() методов в InputStreamReader и OutputStreamWriter классов.

Читайте также:  Python функция максимального элемента

Если кодировка, указанная в реестре наборов символов IANA , поддерживается реализацией платформы Java, то ее каноническое имя должно совпадать с именем, указанным в реестре. Многим кодировкам дается более одного имени в реестре, и в этом случае реестр идентифицирует одно из имен как MIME-preferred . Если кодировка имеет более одного имени реестра, то его каноническое имя должно быть именем, предпочитаемым MIME, а другие имена в реестре должны быть допустимыми псевдонимами. Если поддерживаемая кодировка не указана в реестре IANA, ее каноническое имя должно начинаться с одной из строк «X-» или «x-» .

Реестр кодовых страниц IANA меняется со временем,поэтому каноническое имя и псевдонимы конкретной кодовой страницы могут также меняться со временем.Для обеспечения совместимости рекомендуется,чтобы ни один псевдоним никогда не удалялся из кодовой страницы,а в случае изменения канонического имени кодовой страницы его предыдущее каноническое имя превращалось в псевдоним.

Standard charsets

Каждая реализация платформы Java обязана поддерживать следующие стандартные наборы символов.Чтобы узнать,поддерживаются ли какие-либо другие наборы символов,обратитесь к документации по выпуску вашей реализации.Поведение таких дополнительных наборов символов может отличаться в разных реализациях.

Описание стандартных наборов символов
Charset Description
US-ASCII ISO646-US ASCII, он же ISO646-US , он же базовый латинский блок набора символов Unicode
ISO-8859-1 Латинский алфавит ISO № 1, он же ISO-LATIN-1
UTF-8 Восьмиразрядный формат преобразования UCS
UTF-16BE Шестнадцатиразрядный формат преобразования UCS,биг-ендианный порядок байтов
UTF-16LE Шестнадцатиразрядный формат преобразования UCS,маленький порядок байтов
UTF-16 Шестнадцатиразрядный UCS-формат преобразования,порядок байтов,идентифицируемый дополнительной меткой байтового порядка

UTF-8 кодировка задается RFC 2279 ; формат преобразования, на котором он основан, определен в Поправке 2 к ISO 10646-1, а также описан в стандарте Unicode .

В UTF-16 кодировок определяются RFC 2781 ; форматы преобразования, на которых они основаны, указаны в поправке 1 к ISO 10646-1, а также описаны в стандарте Unicode .

В UTF-16 кодировок использовать шестнадцать-битовых величин и, следовательно , чувствительны к порядком байтов. В этих кодировках порядок байтов потока может указываться начальным byte-order mark представлен символом Юникода ‘\uFEFF’ . Метки порядка байтов обрабатываются следующим образом:

  • При декодировании UTF-16BE и UTF-16LE интерпретируют начальные метки порядка байтов как НЕПРЕРЫВНЫЙ ПРОБЕЛ НУЛЕВОЙ ШИРИНЫ ; при кодировании они не записывают метки порядка байтов.
  • При декодировании UTF-16 интерпретирует метку порядка байтов в начале входного потока, чтобы указать порядок байтов потока, но по умолчанию используется обратный порядок байтов, если нет метки порядка байтов; при кодировании он использует прямой порядок байтов и записывает метку обратного порядка байтов.

Каждый экземпляр виртуальной машины Java имеет набор символов по умолчанию, которым является UTF-8 , если только он не изменен способом, специфичным для реализации. Обратитесь к defaultCharset() для более подробной информации.

Класс StandardCharsets определяет константы для каждой из стандартных кодировок.

Terminology

Название этого класса взято из терминов, используемых в RFC 2278 . В этом документе charset определяется как комбинация одного или нескольких наборов закодированных символов и схемы кодирования символов.(Это определение приводит в замешательство;некоторые другие системы программного обеспечения определяют charset как синоним набор кодированных символов .)

A набор кодированных символов это отображение между набором абстрактных символов и набором целых чисел.US-ASCII,ISO 8859-1,JIS X 0201 и Unicode являются примерами кодированных наборов символов.

Некоторые стандарты определяют character set быть просто набором абстрактных символов без соответствующей назначенной нумерации.Примером такого набора символов является алфавит.Однако,тонкое различие между character set and набор кодированных символов редко используется на практике,первая стала краткой формой для второй,в том числе в спецификации Java API.

A character-encoding scheme это отображение между одним или несколькими кодированными наборами символов и набором октетовых (восьмиразрядных байтовых)последовательностей.UTF-8,UTF-16,ISO 2022 и EUC являются примерами схем кодирования символов.Схемы кодирования часто ассоциируются с определенным набором кодируемых символов;например,UTF-8 используется только для кодирования Юникода.Некоторые схемы,однако,ассоциируются с несколькими наборами кодированных символов;EUC,например,может использоваться для кодирования символов в различных наборах азиатских кодированных символов.

Когда кодированный набор символов используется исключительно с единственной схемой кодирования символов, тогда соответствующая кодировка обычно называется по имени кодированного набора символов; в противном случае кодировка обычно называется по схеме кодирования и, возможно, языку кодированных наборов символов, которые она поддерживает. Следовательно, US-ASCII — это как имя кодированного набора символов, так и кодировки, которая его кодирует, а EUC-JP — это имя набора символов, который кодирует наборы кодированных символов JIS X 0201, JIS X 0208 и JIS X 0212 для японский язык.

Родной символьной кодировкой языка программирования Java является UTF-16.Поэтому кодовая страница в платформе Java определяет отображение между шестнадцатиразрядными единицами кода UTF-16 (т.е.последовательностями кодов)и последовательностями байтов.

Constructor Summary

Источник

Java charset utf 8 class

A named mapping between sequences of sixteen-bit Unicode code units and sequences of bytes. This class defines methods for creating decoders and encoders and for retrieving the various names associated with a charset. Instances of this class are immutable. This class also defines static methods for testing whether a particular charset is supported, for locating charset instances by name, and for constructing a map that contains every charset for which support is available in the current Java virtual machine. Support for new charsets can be added via the service-provider interface defined in the CharsetProvider class. All of the methods defined in this class are safe for use by multiple concurrent threads.

Charset names

  • The uppercase letters 'A' through 'Z' ('\u0041' through '\u005a'),
  • The lowercase letters 'a' through 'z' ('\u0061' through '\u007a'),
  • The digits '0' through '9' ('\u0030' through '\u0039'),
  • The dash character '-' ('\u002d', HYPHEN-MINUS),
  • The plus character '+' ('\u002b', PLUS SIGN),
  • The period character '.' ('\u002e', FULL STOP),
  • The colon character ':' ('\u003a', COLON), and
  • The underscore character '_' ('\u005f', LOW LINE).

Standard charsets

Every implementation of the Java platform is required to support the following standard charsets. Consult the release documentation for your implementation to see if any other charsets are supported. The behavior of such optional charsets may differ between implementations.

Charset Description
US-ASCII Seven-bit ASCII, a.k.a. ISO646-US, a.k.a. the Basic Latin block of the Unicode character set
ISO-8859-1 ISO Latin Alphabet No. 1, a.k.a. ISO-LATIN-1
UTF-8 Eight-bit UCS Transformation Format
UTF-16BE Sixteen-bit UCS Transformation Format, big-endian byte order
UTF-16LE Sixteen-bit UCS Transformation Format, little-endian byte order
UTF-16 Sixteen-bit UCS Transformation Format, byte order identified by an optional byte-order mark
  • When decoding, the UTF-16BE and UTF-16LE charsets interpret the initial byte-order marks as a ZERO-WIDTH NON-BREAKING SPACE; when encoding, they do not write byte-order marks.
  • When decoding, the UTF-16 charset interprets the byte-order mark at the beginning of the input stream to indicate the byte-order of the stream but defaults to big-endian if there is no byte-order mark; when encoding, it uses big-endian byte order and writes a big-endian byte-order mark.

Every instance of the Java virtual machine has a default charset, which may or may not be one of the standard charsets. The default charset is determined during virtual-machine startup and typically depends upon the locale and charset being used by the underlying operating system.

The StandardCharsets class defines constants for each of the standard charsets.

Terminology

The name of this class is taken from the terms used in RFC 2278. In that document a charset is defined as the combination of one or more coded character sets and a character-encoding scheme. (This definition is confusing; some other software systems define charset as a synonym for coded character set.)

A coded character set is a mapping between a set of abstract characters and a set of integers. US-ASCII, ISO 8859-1, JIS X 0201, and Unicode are examples of coded character sets.

Some standards have defined a character set to be simply a set of abstract characters without an associated assigned numbering. An alphabet is an example of such a character set. However, the subtle distinction between character set and coded character set is rarely used in practice; the former has become a short form for the latter, including in the Java API specification.

A character-encoding scheme is a mapping between one or more coded character sets and a set of octet (eight-bit byte) sequences. UTF-8, UTF-16, ISO 2022, and EUC are examples of character-encoding schemes. Encoding schemes are often associated with a particular coded character set; UTF-8, for example, is used only to encode Unicode. Some schemes, however, are associated with multiple coded character sets; EUC, for example, can be used to encode characters in a variety of Asian coded character sets.

When a coded character set is used exclusively with a single character-encoding scheme then the corresponding charset is usually named for the coded character set; otherwise a charset is usually named for the encoding scheme and, possibly, the locale of the coded character sets that it supports. Hence US-ASCII is both the name of a coded character set and of the charset that encodes it, while EUC-JP is the name of the charset that encodes the JIS X 0201, JIS X 0208, and JIS X 0212 coded character sets for the Japanese language.

The native character encoding of the Java programming language is UTF-16. A charset in the Java platform therefore defines a mapping between sequences of sixteen-bit UTF-16 code units (that is, sequences of chars) and sequences of bytes.

Constructor Summary

Method Summary

Источник

Оцените статью