Share via


Charset 类

定义

十六位 Unicode 代码单元序列与字节序列之间的命名映射。

[Android.Runtime.Register("java/nio/charset/Charset", DoNotGenerateAcw=true)]
public abstract class Charset : Java.Lang.Object, IDisposable, Java.Interop.IJavaPeerable, Java.Lang.IComparable
[<Android.Runtime.Register("java/nio/charset/Charset", DoNotGenerateAcw=true)>]
type Charset = class
    inherit Object
    interface IComparable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
继承
Charset
属性
实现

注解

十六位 Unicode 代码单元序列与字节序列之间的命名映射。 此类定义用于创建解码器和编码器以及检索与字符集关联的各种名称的方法。 此类的实例是不可变的。

此类还定义了静态方法,用于测试特定字符集是否受支持、用于按名称定位字符集实例,以及用于构造包含当前 Java 虚拟机中支持的每个字符集的映射。 可以通过 类中 java.nio.charset.spi.CharsetProvider 定义的服务提供程序接口添加对新字符集的支持。

此类中定义的所有方法都可供多个并发线程安全使用。

“charenc”><h2>Charset names</h2>

字符集由以下字符组成的字符串命名:

<ul>

<li> 大写字母 'A' 通过 'Z' ('&#92;u0041' 通过 '&#92;u005a') ,

<li> 小写字母 'a' 通过 'z' ('&#92;u0061' 通过 '&#92;u007a') ,

<li> 通过 '0''9' ('&#92;u0030'  的数字;通过 '&#92;u0039') ,

<li> 短划线字符 '-' ('&#92;u002d', <small>HYPHEN-MINUS</small>) ,

<li> 加号 '+' ('&#92;u002b', <small>PLUS SIGN</small>) ,

<li> 句点字符 '.' ('&#92;u002e', <small>FULL STOP</small>) ,

<li> 冒号字符 ':' ('&#92;u003a', <small>COLON</small>) ,以及

<li> 下划线字符 '_' ('&#92;u005f', <small>LOW LINE</small>) 。

</ul>

字符集名称必须以字母或数字开头。 空字符串不是法定字符集名称。 字符集名称不区分大小写;也就是说,在比较字符集名称时,始终忽略大小写。 字符集名称通常遵循 RFC  中记录的约定;2278: IANA Charset 注册过程http://www.ietf.org/rfc/rfc2278.txt

每个字符集都有一个 规范名称 ,也可能有一个或多个 别名。 规范名称由 #name() name 此类的 方法返回。 按照惯例,规范名称通常采用大写形式。 字符集的别名由 #aliases() aliases 方法返回。

“hn”>某些字符集具有 <i>历史名称</i> ,这是为了与以前版本的 Java 平台兼容而定义的。 字符集的历史名称是其规范名称或其别名之一。 历史名称由 getEncoding()java.io.OutputStreamWriter#getEncoding OutputStreamWriter 类的方法java.io.InputStreamReader#getEncoding InputStreamReader返回。

“iana”>如果 Java 平台的实现支持 IANA Charset 注册表http://www.iana.org/assignments/character-sets中列出的字符集,则其规范名称必须是注册表中列出的名称。 许多字符集在注册表中被赋予多个名称,在这种情况下,注册表会将其中一个名称标识为 MIME 首选。 如果字符集具有多个注册表名称,则其规范名称必须是 MIME 首选名称,并且注册表中的其他名称必须是有效的别名。 如果 IANA 注册表中未列出受支持的字符集,则其规范名称必须以字符串 "X-" 之一或 "x-"开头。

IANA 字符集注册表确实会随时间而更改,因此特定字符集的规范名称和别名也可能随时间而更改。 为了确保兼容性,建议永远不会从字符集中删除任何别名,如果更改字符集的规范名称,则其以前的规范名称将变为别名。

<h2>标准字符集</h2>

“standard”>Java 平台的每个实现都需要支持以下标准字符集。 请参阅实现的发布文档,了解是否支持任何其他字符集。 此类可选字符集的行为可能因实现而异。

<blockquote><table class=“striped” style=“width:80%”><描述文字 style=“display:none”>标准 charsets</描述文字><thead<>tr><的说明 th scope=“col” style=“text-align:left”>Charset</th><th scope=“col” style=“text-align:left”>Description</th></tr<>/thead><tbody><tr><th scope=“row” style=“vertical-align:top”>US-ASCII</th>td>七位 ASCII, a.k.a. ISO646-US, a.k.a. Unicode 字符集</td></tr><<>th scope=“row” style=“vertical-align:top”<ISO-8859-1&nbsp;&nbsp;>/th><td>ISO 拉丁文字母 1,a.k.a. ISO-LATIN-1<</td></tr><th><scope=“row” style=“vertical-align:top”><UTF-8/th<>td>八位 UCS 转换格式</td></tr><th><scope=“row” style=“vertical-align:top”<UTF-16BE>/th><td>16 位 UCS 转换格式,big-endian 字节 order</td></tr><th><scope=“row” style=“vertical-align:top”><UTF-16LE/th><td>16 位 UCS 转换格式, little-endian byte order</td></tr><th><scope=“row” style=“vertical-align:top”><UTF-16/th><td>16 位 UCS 转换格式,字节 由可选的字节顺序标记/td></tr<>/tbody></table></blockquote 标识的顺序<>

字符 UTF-8 集由 RFC  指定;2279http://www.ietf.org/rfc/rfc2279.txt;修订  中指定了它所基于的转换格式;ISO  中的 2 个;10646-1 和 在 Unicode Standardhttp://www.unicode.org/unicode/standard/standard.html 中也介绍了 。

UTF-16字符集由 RFC  指定;2781http://www.ietf.org/rfc/rfc2781.txt;修订  中指定了它们所基于的转换格式;ISO  的 1;10646-1 和 也在 Unicode Standardhttp://www.unicode.org/unicode/standard/standard.html 中介绍。

字符 UTF-16 集使用 16 位数量,因此对字节顺序很敏感。 在这些编码中,流的字节顺序可由由 Unicode 字符 '&#92;uFEFF'表示的初始字节顺序标记指示。 字节顺序标记的处理方式如下:

<ul>

<李>

解码时, UTF-16BEUTF-16LE 字符集将初始字节顺序标记解释为 <小型>零宽度非中断空间</小>;编码时,它们不会写入字节顺序标记。

</李>

<李>

解码时, UTF-16 字符集将解释输入流开头的字节顺序标记以指示流的字节顺序,但如果没有字节顺序标记,则默认为 big-endian;编码时,它使用 big-endian 字节顺序并写入 big-endian 字节顺序标记。

</李>

</ul>

在任何情况下,不会省略输入序列的第一个元素之后出现的字节顺序标记,因为相同的代码用于表示 <小型>零宽度非中断空间</小>。

Android 注意:Android 平台默认值始终为 UTF-8。

StandardCharsets 为每个标准字符集定义常量。

<h2>术语</h2>

此类的名称取自 RFC  中使用的术语;2278http://www.ietf.org/rfc/rfc2278.txt. 在该文档中, 字符集 定义为一个或多个编码字符集和字符编码方案的组合。 (此定义令人困惑:其他一些软件系统将 字符集 定义为 编码字符集的同义词。)

编码字符集是一组抽象字符和一组整数之间的映射。 US-ASCII、ISO 8859-1,JIS X 0201 和 Unicode 是编码字符集的示例。

一些标准已将 字符集 定义为一组抽象字符,而无需分配关联的编号。 字母表是此类字符集的一个示例。 然而,实际上很少使用 字符集编码字符集 之间的微妙区别:前者已成为后者的缩写形式,包括在 Java API 规范中。

字符编码方案是一个或多个编码字符集与一组八进制 (八位字节) 序列之间的映射。 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 平台中的字符集定义 16 位 UTF-16 代码单元序列 (即字符) 序列和字节序列之间的映射。

在 1.4 中添加。

java.nio.charset.CharsetJava 文档。

此页面的部分内容是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的术语使用。

构造函数

Charset(IntPtr, JniHandleOwnership)

创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。

Charset(String, String[])

使用给定规范名称和别名集初始化新的字符集。

属性

Class

返回此 Object的运行时类。

(继承自 Object)
Handle

基础 Android 实例的句柄。

(继承自 Object)
IsRegistered

指示此字符集是否已在 IANA Charset 注册表中注册。

JniIdentityHashCode

十六位 Unicode 代码单元序列与字节序列之间的命名映射。

(继承自 Object)
JniPeerMembers

十六位 Unicode 代码单元序列与字节序列之间的命名映射。

PeerReference

十六位 Unicode 代码单元序列与字节序列之间的命名映射。

(继承自 Object)
ThresholdClass

此 API 支持 Mono for Android 基础结构,不应直接从代码使用。

ThresholdType

此 API 支持 Mono for Android 基础结构,不应直接从代码使用。

方法

Aliases()

返回包含此字符集别名的集。

AvailableCharsets()

构造从规范字符集名称到字符集对象的排序映射。

CanEncode()

指示此字符集是否支持编码。

Clone()

创建并返回此对象的副本。

(继承自 Object)
CompareTo(Charset)

将此字符集与另一个字符集进行比较。

Contains(Charset)

指示此字符集是否包含给定的字符集。

Decode(ByteBuffer)

将字符集中的字节解码为 Unicode 字符的便利方法。

DefaultCharset()

返回此 Java 虚拟机的默认字符集。

DisplayName()

返回默认区域设置的此字符集的用户可读名称。

DisplayName(Locale)

返回给定区域设置的此字符集的用户可读名称。

Dispose()

十六位 Unicode 代码单元序列与字节序列之间的命名映射。

(继承自 Object)
Dispose(Boolean)

十六位 Unicode 代码单元序列与字节序列之间的命名映射。

(继承自 Object)
Encode(CharBuffer)

用于在此字符集中将 Unicode 字符编码为字节的便利方法。

Encode(String)

用于在此字符集中将字符串编码为字节的便利方法。

Equals(Object)

指示此对象是否等于另一个对象。

ForName(String)

返回命名字符集的 charset 对象。

GetHashCode()

计算此字符集的哈希代码。

IsSupported(String)

指示是否支持命名字符集。

JavaFinalize()

当垃圾回收确定不再引用对象时,由对象上的垃圾回收器调用。

(继承自 Object)
Name()

返回此字符集的规范名称。

NewDecoder()

为此字符集构造新的解码器。

NewEncoder()

为此字符集构造新的编码器。

Notify()

唤醒正在等待此对象的监视器的单个线程。

(继承自 Object)
NotifyAll()

唤醒正在等待此对象的监视器的所有线程。

(继承自 Object)
SetHandle(IntPtr, JniHandleOwnership)

设置 Handle 属性。

(继承自 Object)
ToArray<T>()

十六位 Unicode 代码单元序列与字节序列之间的命名映射。

(继承自 Object)
ToString()

返回描述此字符集的字符串。

UnregisterFromRuntime()

十六位 Unicode 代码单元序列与字节序列之间的命名映射。

(继承自 Object)
Wait()

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>。<>

(继承自 Object)
Wait(Int64)

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>,或直到经过一定数量的实时。<>

(继承自 Object)
Wait(Int64, Int32)

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>,或直到经过一定数量的实时。<>

(继承自 Object)

显式接口实现

IComparable.CompareTo(Object)

十六位 Unicode 代码单元序列与字节序列之间的命名映射。

IJavaPeerable.Disposed()

十六位 Unicode 代码单元序列与字节序列之间的命名映射。

(继承自 Object)
IJavaPeerable.DisposeUnlessReferenced()

十六位 Unicode 代码单元序列与字节序列之间的命名映射。

(继承自 Object)
IJavaPeerable.Finalized()

十六位 Unicode 代码单元序列与字节序列之间的命名映射。

(继承自 Object)
IJavaPeerable.JniManagedPeerState

十六位 Unicode 代码单元序列与字节序列之间的命名映射。

(继承自 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

十六位 Unicode 代码单元序列与字节序列之间的命名映射。

(继承自 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

十六位 Unicode 代码单元序列与字节序列之间的命名映射。

(继承自 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

十六位 Unicode 代码单元序列与字节序列之间的命名映射。

(继承自 Object)

扩展方法

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

十六位 Unicode 代码单元序列与字节序列之间的命名映射。

GetJniTypeName(IJavaPeerable)

十六位 Unicode 代码单元序列与字节序列之间的命名映射。

适用于