ASN1 UTF-8 字符串解码

ASN1 UTF-8 string Decoding

我正在努力用 C 语言制作一个 ASN.1 解析器(使用 Ericsson ASN1 规范文档)。我想对UTF-8字符串类型进行解码,但是我在网上找不到这方面的信息,而且我使用的文档没有详细描述UTF-8字符串。谁能给我一些代码,或者解释一下如何解码它。

我是 ASN.1 的新手。

完整的 UTF-8 描述,它允许您编写编码器和解码器,总结在维基百科页面的 table 中:

http://en.wikipedia.org/wiki/UTF-8#Description

如果您正在尝试解析 ASN.1,那么 Kaliski's ‘Layman’s Guide’ 是一个很好的介绍性资源(可在 Web 上的不同位置获得,格式为 HTML 和 PDF)。然而,该文件 没有 提到 UTF8String 类型。

您需要知道的额外信息是 UTF8Stringtag 12(十进制,或十六进制的 0c),并且它被编码为表示UTF-8 编码的字符串。

因此字符串“Hello”将被编码为

0c 06 48 65 6c 6c c3 b3

(顺便说一句,我假设“爱立信 ASN1 规范文档”讨论的是标准 ASN.1,而不是某些变体。)