我正在使用C语言制作ASN.1解析器(使用爱立信ASN1规范文档)。我想解码UTF-8字符串类型,但我无法在线找到有关此信息,我正在使用的文档没有详细描述UTF-8字符串。任何人都可以向我提供一些代码,或解释如何解码它。
我是ASN.1的新手。
答案 0 :(得分:9)
如果您正在尝试解析ASN.1,那么优秀的介绍性资源是Kaliski's ‘Layman’s Guide’(可在网络上的各个位置以HTML和PDF格式提供)。但是该文档没有提及UTF8String
类型。
您需要知道的额外信息是UTF8String
有tag 12(十进制或十六进制为0c
),并且它被编码为表示字符串的字节序列UTF-8编码。
因此字符串'Helló'将被编码为
0c 06 48 65 6c 6c c3 b3
(顺便说一句,我假设“爱立信ASN1规范文档”讨论的是标准ASN.1,而不是某些变体。)
答案 1 :(得分:-2)
维基百科页面中的表格总结了完整的UTF-8描述,允许您编写编码器和解码器: