Spec-Zone .ru
спецификации, руководства, описания, API
|
public abstract class Charset extends Object implements Comparable<Charset>
Этот класс также определяет статические методы для того, чтобы протестировать, поддерживается ли определенный набор символов, для того, чтобы определить местоположение экземпляров набора символов по имени, и для того, чтобы создать карту, которая содержит каждый набор символов, для которого поддержка доступна в текущей виртуальной машине Java. Поддержка новых наборов символов может быть добавлена через интерфейс поставщика услуг, определенный в CharsetProvider
класс.
Все методы, определенные в этом классе, безопасны для использования многократными параллельными потоками.
Наборы символов называют строки, составленные из следующих символов: Каждый набор символов имеет каноническое имя и может также иметь один или более псевдонимов. Каноническое имя возвращается У некоторых наборов символов есть историческое имя, которое определяется для совместимости с предыдущими версиями платформы Java. Историческое имя набора символов является или своим каноническим именем или одним из его псевдонимов. Историческое имя возвращается методами getEncoding() Если набор символов, перечисленный в Реестр набора символов IANA действительно изменяется в течение долгого времени, и таким образом, каноническое имя и псевдонимы определенного набора символов могут также измениться в течение долгого времени. Чтобы гарантировать совместимость, рекомендуется, чтобы никакой псевдоним никогда не был удален из набора символов, и этого, если каноническое имя набора символов изменяется тогда его предыдущее каноническое имя быть превращенным в псевдоним. Каждая реализация платформы Java обязана поддерживать следующие стандартные наборы символов. Консультируйтесь с документацией выпуска для своей реализации, чтобы видеть, поддерживаются ли какие-либо другие наборы символов. Поведение таких дополнительных наборов символов может отличаться между реализациями. Набор символов Описание Набор символов UTF-8 определяется Наборы символов UTF-16 определяются Наборы символов UTF-16 используют шестнадцатиразрядные количества и поэтому чувствительны к порядку байтов. В этих кодировках порядок байтов потока может быть обозначен начальной меткой порядка байтов, представленной символом Unicode '\uFEFF'. Метки порядка байтов обрабатываются следующим образом: Декодируя, UTF-16BE и наборы символов UTF-16LE интерпретируют начальные метки порядка байтов как НЕРАЗРЫВНЫЙ ПРОБЕЛ НУЛЕВОЙ ШИРИНЫ Декодируя, набор символов UTF-16 интерпретирует метку порядка байтов в начале входного потока, чтобы указать на порядок байтов потока, но значений по умолчанию к обратному порядку байтов, если нет никакой метки порядка байтов; кодируя, это использует обратный порядок байтов и пишет метку порядка байтов с обратным порядком байтов. У каждого экземпляра виртуальной машины Java есть набор символов по умолчанию, который может или, возможно, не является одним из стандартных наборов символов. Набор символов по умолчанию определяется во время запуска виртуальной машины и обычно зависит от локали и набора символов, используемого базовой операционной системой. Имя этого класса берется из терминов, использованных в Кодированный набор символов является отображением между рядом абстрактных символов и рядом целых чисел. US-ASCII, ISO 8859-1, JIS X 0201, и Unicode являются примерами кодированных наборов символов. Некоторые стандарты определили набор символов, чтобы быть просто рядом абстрактных символов без связанной присвоенной нумерации. Алфавит является примером такого набора символов. Однако, тонкое различие между набором символов и кодированным набором символов редко используется практически; прежний стал краткой формой для последнего, включая в спецификации API Java. Схема кодировки символов является отображением между одним или более кодированными наборами символов и рядом октета (восьмиразрядный байт) последовательности. UTF-8, UTF-16, ISO 2022, и EUC являются примерами схем кодировки символов. Схемы кодирования часто связываются с определенным кодированным набором символов; UTF-8, например, используется только, чтобы закодировать Unicode. Некоторые схемы, однако, связываются с многократными кодированными наборами символов; EUC, например, может использоваться, чтобы закодировать символы во множестве азиатских кодированных наборов символов. Когда кодированный набор символов используется исключительно с единственной схемой кодировки символов тогда, соответствующий набор символов обычно назван по имени кодированного набора символов; иначе набор символов обычно назван по имени схемы кодирования и, возможно, локаль кодированных наборов символов, которые это поддерживает. Следовательно US-ASCII является и именем кодированного набора символов и набора символов, который кодирует это, в то время как EUC-JP является именем набора символов, который кодирует JIS X 0201, JIS X 0208, и JIS X 0212 кодированных наборов символов для японского языка. Собственная кодировка символов языка программирования Java является UTF-16. Набор символов в платформе Java поэтому определяет отображение между последовательностями шестнадцатиразрядных элементов кода UTF-16 (то есть, последовательностями случайных работ) и последовательностями байтов. Имена набора символов
Имя набора символов должно начаться или с буквы или с цифры. Пустая строка не является юридическим именем набора символов. Имена набора символов не являются чувствительными к регистру; то есть, регистр всегда игнорируется, сравнивая имена набора символов. Имена набора символов обычно следуют за соглашениями, задокументированными в name
метод этого класса. Канонические имена, условно, обычно в верхнем регистре. Псевдонимы набора символов возвращаются aliases
метод.
InputStreamReader
и OutputStreamWriter
классы.
Стандартные наборы символов
US-ASCII
Семиразрядный ASCII, a.k.a. ISO646-US, a.k.a. Основной латинский блок набора символов Unicode ISO-8859-1
Латинский Алфавит № 1 ISO, a.k.a. ISO-LATIN-1 UTF-8
Восьмиразрядный Формат Преобразования UCS UTF-16BE
Шестнадцатиразрядный Формат Преобразования UCS, обратный порядок байтов UTF-16LE
Шестнадцатиразрядный Формат Преобразования UCS, прямой порядок байтов UTF-16
Шестнадцатиразрядный Формат Преобразования UCS, порядок байтов идентифицируется дополнительной меткой порядка байтов
В любом случае метки порядка байтов, происходящие после первого элемента входной последовательности, не опускаются, так как тот же самый код используется, чтобы представить НЕРАЗРЫВНЫЙ ПРОБЕЛ НУЛЕВОЙ ШИРИНЫStandardCharsets
класс определяет константы для каждого из стандартных наборов символов. Терминология
CharsetDecoder
, CharsetEncoder
, CharsetProvider
, Character
Модификатор | Конструктор и Описание |
---|---|
protected |
Charset(String canonicalName, String[] aliases)
Инициализирует новый набор символов с данным каноническим именем и набором псевдонима.
|
Модификатор и Тип | Метод и Описание |
---|---|
Set<String> |
aliases()
Возвращает набор, содержащий псевдонимы этого набора символов.
|
static SortedMap<String,Charset> |
availableCharsets()
Создает сортированную карту от канонических имен набора символов до объектов набора символов.
|
boolean |
canEncode()
Говорит, поддерживает ли этот набор символов кодирование.
|
int |
compareTo(Charset that)
Сравнивает этот набор символов с другим.
|
abstract boolean |
contains(Charset cs)
Говорит, содержит ли этот набор символов данный набор символов.
|
CharBuffer |
decode(ByteBuffer bb)
Метод удобства, который декодирует байты в этом наборе символов в символы Unicode.
|
static Charset |
defaultCharset()
Возвращает набор символов по умолчанию этой виртуальной машины Java.
|
Строка |
displayName()
Возвраты удобочитаемое имя этого набора символов для локали по умолчанию.
|
Строка |
displayName(Locale locale)
Возвраты удобочитаемое имя этого набора символов для данной локали.
|
ByteBuffer |
encode(CharBuffer cb)
Метод удобства, который кодирует символы Unicode в байты в этом наборе символов.
|
ByteBuffer |
encode(String str)
Метод удобства, который кодирует строку в байты в этом наборе символов.
|
boolean |
equals(Object ob)
Говорит, равен ли этот объект другому.
|
static Charset |
forName(String charsetName)
Возвращает объект набора символов для именованного набора символов.
|
int |
hashCode()
Вычисляет хэш-код для этого набора символов.
|
boolean |
isRegistered()
Говорит, регистрируется ли этот набор символов в
|
static boolean |
isSupported(String charsetName)
Говорит, поддерживается ли именованный набор символов.
|
Строка |
name()
Возвраты каноническое имя этого набора символов.
|
abstract CharsetDecoder |
newDecoder()
Создает новый декодер для этого набора символов.
|
abstract CharsetEncoder |
newEncoder()
Создает новый кодер для этого набора символов.
|
Строка |
toString()
Возвращает строку, описывающую этот набор символов.
|
protected Charset(String canonicalName, String[] aliases)
canonicalName
- Каноническое имя этого набора символовaliases
- Массив псевдонимов этого набора символов, или нуль, если у этого нет никаких псевдонимовIllegalCharsetNameException
- Если каноническое имя или какой-либо из псевдонимов недопустимыpublic static boolean isSupported(String charsetName)
charsetName
- Имя требуемого набора символов; может быть или каноническое имя или псевдонимIllegalCharsetNameException
- Если данное имя набора символов недопустимоIllegalArgumentException
- Если данный charsetName является нулемpublic static Charset forName(String charsetName)
charsetName
- Имя требуемого набора символов; может быть или каноническое имя или псевдонимIllegalCharsetNameException
- Если данное имя набора символов недопустимоIllegalArgumentException
- Если данный charsetName является нулемUnsupportedCharsetException
- Если никакая поддержка именованного набора символов не доступна в этом экземпляре виртуальной машины Javapublic static SortedMap<String,Charset> availableCharsets()
У карты, возвращенной этим методом, будет одна запись для каждого набора символов, для которого поддержка доступна в текущей виртуальной машине Java. Если у двух или больше поддерживаемых наборов символов будет то же самое каноническое имя тогда, то получающаяся карта будет содержать только одного из них; какой, который это будет содержать, не определяется.
Вызов этого метода, и последующее использование получающейся карты, могут заставить отнимающий много времени диск или сетевые операции ввода-вывода происходить. Этот метод обеспечивается для приложений, которые должны перечислить все доступные наборы символов, например чтобы позволить пользовательский выбор набора символов. Этот метод не используется forName
метод, который вместо этого использует эффективный инкрементный алгоритм поиска.
Этот метод может возвратить различные результаты в разное время, если новые провайдеры набора символов динамически делаются доступными для текущей виртуальной машины Java. В отсутствие таких изменений наборы символов, возвращенные этим методом, являются точно теми, которые могут быть получены через forName
метод.
public static Charset defaultCharset()
Набор символов по умолчанию определяется во время запуска виртуальной машины и обычно зависит от локали и набора символов базовой операционной системы.
public final String name()
public final Set<String> aliases()
public String displayName()
Реализация по умолчанию этого метода просто возвращает каноническое имя этого набора символов. Конкретные подклассы этого класса могут переопределить этот метод, чтобы обеспечить локализованное имя дисплея.
public final boolean isRegistered()
public String displayName(Locale locale)
Реализация по умолчанию этого метода просто возвращает каноническое имя этого набора символов. Конкретные подклассы этого класса могут переопределить этот метод, чтобы обеспечить локализованное имя дисплея.
locale
- Локаль, для которой должно быть получено имя дисплеяpublic abstract boolean contains(Charset cs)
Набор символов C, как говорят, содержит набор символов D, если, и только если, каждый символ, представимый в D, является также представимым в C. Если это отношение будет содержать тогда, то гарантируется, что каждая строка, которая может быть закодирована в D, может также быть закодирована в C, не выполняя замен.
Это C содержит D, не подразумевает, что каждый символ, представимый в C определенной последовательностью байта, представляется в D той же самой последовательностью байта, хотя иногда дело обстоит так.
Каждый набор символов содержит себя.
Этот метод вычисляет приближение отношения включения: Если это возвращает true тогда, данный набор символов, как известно, содержится этим набором символов; если это возвращает false, однако, то это - не обязательно случай, что данный набор символов не содержится в этом наборе символов.
public abstract CharsetDecoder newDecoder()
public abstract CharsetEncoder newEncoder()
UnsupportedOperationException
- Если этот набор символов не поддерживает кодированиеpublic boolean canEncode()
Почти все кодирование поддержки наборов символов. Основные исключения являются наборами символов автоматического обнаружения специального назначения, декодеры которых могут определить, какие из нескольких возможных схем кодирования используются, исследуя входную последовательность байта. Такие наборы символов не поддерживают кодирование, потому что нет никакого способа определить, какое кодирование должно использоваться на выводе. Реализации таких наборов символов должны переопределить этот метод, чтобы возвратить false.
public final CharBuffer decode(ByteBuffer bb)
Вызов этого метода на набор символов cs возвращает тот же самый результат как выражение
cs.newDecoder() .onMalformedInput(CodingErrorAction.REPLACE) .onUnmappableCharacter(CodingErrorAction.REPLACE) .decode(bb);за исключением того, что это потенциально более эффективно, потому что это может кэшировать декодеры между последовательными вызовами.
Этот метод всегда заменяет уродливый ввод и неотображаемо-символьные последовательности с заменяющим байтовым массивом этого набора символов по умолчанию. Чтобы обнаружить такие последовательности, используйте CharsetDecoder.decode(java.nio.ByteBuffer)
метод непосредственно.
bb
- Буфер байта, который будет декодироватьсяpublic final ByteBuffer encode(CharBuffer cb)
Вызов этого метода на набор символов cs возвращает тот же самый результат как выражение
cs.newEncoder() .onMalformedInput(CodingErrorAction.REPLACE) .onUnmappableCharacter(CodingErrorAction.REPLACE) .encode(bb);за исключением того, что это потенциально более эффективно, потому что это может кэшировать кодеры между последовательными вызовами.
Этот метод всегда заменяет уродливый ввод и неотображаемо-символьные последовательности с заменяющей строкой этого набора символов по умолчанию. Чтобы обнаружить такие последовательности, используйте CharsetEncoder.encode(java.nio.CharBuffer)
метод непосредственно.
cb
- Буфер случайной работы, который будет закодированpublic final ByteBuffer encode(String str)
Вызов этого метода на набор символов cs возвращает тот же самый результат как выражение
cs.encode(CharBuffer.wrap(s));
str
- Строка, которая будет закодированаpublic final int compareTo(Charset that)
Наборы символов упорядочиваются их каноническими именами без отношения случиться.
compareTo
в интерфейсе Comparable<Charset>
that
- Набор символов, с которым должен быть сравнен этот набор символовpublic final int hashCode()
hashCode
в классе Object
Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
public final boolean equals(Object ob)
Два набора символов равны, если, и только если, у них есть те же самые канонические имена. Набор символов никогда не равен любому другому типу объекта.
equals
в классе Object
ob
- ссылочный объект, с которым можно сравниться.Object.hashCode()
, HashMap
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.