在文本编码转换器API中,MIB到底是什么?

问题描述 投票:0回答:1

TEC(也称为文本编码转换管理器)具有这些 API,在 TextEncodingConverter.h 中声明:

extern OSStatus 
TECCopyTextEncodingInternetNameAndMIB(
  TextEncoding               textEncoding,
  TECInternetNameUsageMask   usage,
  CFStringRef *              encodingNamePtr,       /* can be NULL */
  SInt32 *                   mibEnumPtr)            /* can be NULL */ __OSX_AVAILABLE_STARTING(__MAC_10_3, __IPHONE_NA);

extern OSStatus 
TECGetTextEncodingFromInternetNameOrMIB(
  TextEncoding *             textEncodingPtr,
  TECInternetNameUsageMask   usage,
  CFStringRef                encodingName,
  SInt32                     mibEnum)                         __OSX_AVAILABLE_STARTING(__MAC_10_3, __IPHONE_NA);

标头中的文档说 MIB 参数...接受/返回 MIB 枚举值。但只定义了一个这样的枚举:

kTEC_MIBEnumDontCare
。没有其他人了。 (前一个函数的文档还指出“有效的 MIB 枚举从 3 开始”。)

标头中没有任何内容定义 MIB(甚至没有说明字母代表什么),并且该 API 的其余 Apple 文档也没有对其进行解释。虽然名为

TECGetTextEncodingInternetName
TECGetTextEncodingFromInternetName
的旧函数已记录,但使用 CFStrings 并获取/返回 MIB 的新函数却没有记录。

那么这东西到底是什么?

character-encoding macos-carbon core-services text-encoding-converter
1个回答
0
投票

虽然“MIB”在这些函数名称中用作名词,但在函数文档中更多地用作形容词,指的是“MIB 枚举值”。这是一个微妙的线索。

另外:“MIB 枚举值”中的“enum”并不意味着 C 枚举的意义。这就是为什么没有定义其他枚举(按照 Apple 的风格,通常会有一个

typedef
与之关联,就像
TextEncoding
代表它们自己的编码常量)。这是“已定义数字列表”的更通用含义,在这种情况下,该列表位于其他地方。

MIB 代表管理信息库,如 RFC 3808 所解释。字符集 MIB 枚举值由此 IANA 分配列表定义。

RFC 暗示这些是包含更多类别的更广泛管理信息库的子集。它被定义为“管理信息结构”的一部分,它似乎是非常高级的、对所有事物进行分类的东西。从查看文本编码到阅读 SMI 的转变有点像用县地图换星图。 正如 TEC 文档所述,有效的字符集 MIB 枚举值从 3 开始。小于该值的值永远不是有效的字符集 MIB 枚举值。

因此,相关 TEC 功能可以从 IANA 编码名称或字符集 MIB 枚举值生成核心服务

TextEncoding

,或者反过来为您提供最接近对应于

TextEncoding 的 IANA 名称和/或字符集 MIB 枚举值
.
    

© www.soinside.com 2019 - 2024. All rights reserved.