©
This document uses PHP Chinese website manual Release
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object java.nio.charset.Charset
public abstract class Charset
16 位的 Unicode 代码单元序列和字节序列之间的指定映射关系。此类定义了用于创建解码器和编码器以及获取与 charset 关联的各种名称的方法。此类的实例是不可变的。
此类也定义了用于测试是否支持特定 charset 的静态方法、通过名称查找 charset 实例的静态方法,以及构造一个包含目前 Java 虚拟机支持的每个 charset 的映射静态方法。通过类 CharsetProvider
中定义的服务提供者接口可以添加对新 charset 的支持。
此类中定义的所有方法用于多个并发线程是安全的。
通过以下字符所组成的字符串来命名 Charset:
Charset 名称
Charset 名称必须以字母或数字开头。空字符串不是合法的 charset 名称。Charset 名称是大小写不敏感的,也就是当比较 charset 名称时总是忽略大小写。Charset 名称通常遵循 RFC2278:IANA Charset Registration Procedures 中所记录的约定。
每个 charset 有一个规范名称,也可能有一个或多个别名。规范名称由此类的 name
方法返回。根据约定,规范名称通常是大写的。charset 的别名由 aliases
方法返回。
构造方法摘要 | |
---|---|
protected |
Charset(String canonicalName,
String[] aliases)
使用给定的规范名称和别名集合初始化新 charset。 |
方法摘要 | |
---|---|
Set<String> |
aliases()
返回包含此 charset 各个别名的集合。 |
static SortedMap<String,Charset> |
availableCharsets()
构造从规范 charset 名称到 charset 对象的有序映射。 |
boolean |
canEncode()
通知此 charset 是否支持编码。 |
int |
compareTo(Charset that)
比较此 charset 与其他 charset。 |
abstract boolean |
contains(Charset cs)
通知此 charset 是否包含给定的 charset。 |
CharBuffer |
decode(ByteBuffer bb)
将此 charset 中的字节解码成 Unicode 字符的便捷方法。 |
static Charset |
defaultCharset()
返回此 Java 虚拟机的默认 charset。 |
String |
displayName()
返回此 charset 用于默认语言环境的可读名称。 |
String |
displayName(Locale locale)
返回此 charset 用于给定语言环境的可读名称。 |
ByteBuffer |
encode(CharBuffer cb)
将此 charset 中的 Unicode 字符编码成字节的便捷方法。 |
ByteBuffer |
encode(String str)
将此 charset 中的字符串编码成字节的便捷方法。 |
boolean |
equals(Object ob)
通知此对象是否和其他对象相等。 |
static Charset |
forName(String charsetName)
返回指定 charset 的 charset 对象。 |
int |
hashCode()
计算此 charset 的哈希码。 |
boolean |
isRegistered()
通知此 charset 是否已在 IANA Charset Registry 中注册。 |
static boolean |
isSupported(String charsetName)
通知是否支持指定的 charset。 |
String |
name()
返回此 charset 的规范名称。 |
abstract CharsetDecoder |
newDecoder()
为此 charset 构造新的解码器。 |
abstract CharsetEncoder |
newEncoder()
为此 charset 构造新的编码器。 |
String |
toString()
返回描述此 charset 的字符串。 |
从类 java.lang.Object 继承的方法 |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
构造方法详细信息 |
---|
protected Charset(String canonicalName, String[] aliases)
canonicalName
- 此 charset 的规范名称aliases
- 此 charset 别名的数组,如果没有别名则为 null
IllegalCharsetNameException
- 如果规范名称和任何一个别名非法方法详细信息 |
---|
public static boolean isSupported(String charsetName)
charsetName
- 请求的 charset 名称;可能是规范名称或别名
IllegalCharsetNameException
- 如果给定的 charset 名称是非法的
IllegalArgumentException
- 如果给定的 charsetName 为 nullpublic static Charset forName(String charsetName)
charsetName
- 请求的 charset 名称;可能是规范名称或别名
IllegalCharsetNameException
- 如果给定的 charset 名称是非法的
IllegalArgumentException
- 如果给定的 charsetName 为 null
UnsupportedCharsetException
- 如果此 Java 虚拟机的实例不支持指定 charsetpublic static SortedMap<String,Charset> availableCharsets()
此方法返回的映射对每个 charset 都有一项,当前 Java 虚拟机是支持这些 charset 的。如果所支持的两个或多个 charset 具有相同的规范名称,则结果映射中只包含它们中的一个;包含哪一个没有指定。
对此方法的调用,以及对结果映射的后续使用可能导致出现耗时的磁盘或网络 I/O 操作。为需要枚举所有可用 charset 的应用程序提供此方法,例如允许用户选择 charset。forName
方法不使用此方法,而是使用一种高效的增量查找算法。
如果新的 charset 提供者可供当前 Java 虚拟机动态使用,则此方法可能在不同的时间返回不同的结果。如果没有这种改变,则此方法返回的 charset 恰好是那些可以通过 forName
方法获取的 charset。
public static Charset defaultCharset()
默认 charset 在虚拟机启动时决定,通常根据语言环境和底层操作系统的 charset 来确定。
public final String name()
public final Set<String> aliases()
public String displayName()
此方法的默认实现只返回此 charset 的规范名称。为了提供本地化的显示名称,此类的具体子类可以重写此方法。
public final boolean isRegistered()
public String displayName(Locale locale)
此方法的默认实现只返回此 charset 的规范名称。为了提供本地化的显示名称,此类的具体子类可以重写此方法。
locale
- 要为其获取显示名称的语言环境
public abstract boolean contains(Charset cs)
当且仅当在 charset D 中可表示的每个字符,在字符集 C 中也是可表示的时,才能说 C 包含 D。如果存在这种关系,就能保证可在 D 进行编码的所有字符串不用执行任何替换就可在 C 中进行编码。
C 包含 D 不表示 C 中以特定字节序列可表示的每个字符在 D 中也以相同的字节序列表示,尽管有时是这种情况。
每个 charset 包含其自身。
此方法计算近似的包含关系:如果返回 true,则已知给定的 charset 包含在此 charset 中;但是如果返回 false,则不一定说明给定的 charset 不包含在此 charset 中。
public abstract CharsetDecoder newDecoder()
public abstract CharsetEncoder newEncoder()
UnsupportedOperationException
- 如果此 charset 不支持编码public boolean canEncode()
几乎所有的 charset 都支持编码。常见的例外是专用的自动检测 charset,它的解码器通过检查输入字节序列,就能够确定正在使用多个可能编码方案中的哪一个。此类 charset 不支持编码是由于无法确定输出时应该使用哪种编码。此类 charset 的实现应该重写此方法以返回 false。
public final CharBuffer decode(ByteBuffer bb)
在 charset cs 上调用此方法,会返回和下面表达式相同的结果
cs.newDecoder() .onMalformedInput(CodingErrorAction.REPLACE) .onUnmappableCharacter(CodingErrorAction.REPLACE) .decode(bb);除此之外它可能更为高效,因为它能在两次连续的调用之间缓存解码器。
此方法总是用此 charset 的默认替换 byte 数组替换错误输入和不可映射的字符序列。为了检测此种序列,可直接使用 CharsetDecoder.decode(java.nio.ByteBuffer)
方法。
bb
- 要解码的 byte 缓冲区
public final ByteBuffer encode(CharBuffer cb)
在 charset cs 上调用此方法,会返回和下面表达式相同的结果
cs.newEncoder() .onMalformedInput(CodingErrorAction.REPLACE) .onUnmappableCharacter(CodingErrorAction.REPLACE) .encode(bb);除此之外它可能更为高效,因为它能在两次连续的调用之间缓存编码器。
此方法总是用此 charset 的默认替换字符串替换错误输入和不可映射的字符序列。为了检测此种序列,可直接使用 CharsetEncoder.encode(java.nio.CharBuffer)
方法。
cb
- 要编码的 char 缓冲区
public final ByteBuffer encode(String str)
在 charset cs 上调用此方法,会返回和下面表达式相同的结果
cs.encode(CharBuffer.wrap(s));
str
- 要编码的字符串
public final int compareTo(Charset that)
charset 根据它们的规范名称排序,而不考虑大小写。
Comparable<Charset>
中的 compareTo
that
- 和此 charset 进行比较的 charset
public final int hashCode()
Object
中的 hashCode
Object.equals(java.lang.Object)
,
Hashtable
public final boolean equals(Object ob)
当且仅当两个 charset 具有相同的规范名称时它们才相等。一个 charset 从来不和任何其他类型的对象相等。
Object
中的 equals
ob
- 要与之比较的引用对象。
Object.hashCode()
,
Hashtable
public final String toString()
Object
中的 toString
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。