ASN.1提供了多种编码方式,比如:BER (Basic Encoding Rules)  ASN.1最基本的编码方式;DER (Distinguished Encoding Rules)主要用于对安全性要求比较高的应用程序;CER (Canonical Encoding Rules)主要用于编解码数据量巨大的消息,它能够保证在所有数据还没有到达的时候就开始进行编码解码 工作;PER (Packet Encoding Rules)采用了有效 算法,缩短了编解码的时间;此外,还有 XER等其他类型的解码方式。这些编码规则描述了如何对 ASN.1中定义的数值进行编码便于传输,而 不管是否有相同的计算机环境、编程语言和应用系统等 因素。 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

BER 采用了最基本的TLV三元组结构对抽象数据进行编解码操作 其编码规则简单,但编码后数据开销过大,增加了很多冗余数据。

CERDER两种编码规则均 BER 基础上增加 一定 约束发展而来 CERDER的主要区别在于:CER使用不定长编码格式,满足了传输大量数据的 需要 DER使用定长编码格式为可靠数据的传输而设计。

1994ASN.1引入了PER编码规则。与BER规则相比,PER编码后数据 占用的空间 能获得40%-50%的改进,因此被广泛应用于VoIP、视频电话、多媒体及第三代移动通信系统等高速数据传输领域。与BER中递归使用三元组TLV不同,PER的格式为:[P][L][V]  optional Preamble, optional Length, optional Value PLV中每个域不是八位组串 而是比特串。在PER规则中,由于Length可以省略(有些时候Value也可以省略),因而不能从编码中得知边界,×××必须知道抽象描述才能正确解码。PER编码中没有Tag域,因此 , PER不再缺省支持扩展,必须明确在描述中添加扩展符。只有当长度没有被固定或者数据长度很重要的情况下,才对Length进行编码。对SEQUENCESET类型的值编码时,使用一个bitmap来标识可选成员是否出现;同样,在编码CHOICE的被选择成员前, 会增加一个序号指示其位置。和BER相比,PER使编××× 的处理时间相对少些,传输速度更快。PER编码规则可以分为基本的和规范的两类,每一类又可以分为对齐和不对齐两种。

XER编码规则主要被用来将数据转换成XML格式数据,该编码规则在1999年才被引入到ASN.1标准中。