ICU:如何过滤可用转换器的字符集检测?

ICU: How to filter the charset detection to the available converters?

我正在使用 ICU 进行字符集检测,通过另一个包含它的库,但它没有适用于它可以检测到的所有字符集的转换器。例如,ISO-8859-1 有一个转换器,但 ISO-8859-2.

没有

我已经尝试了一些方法,例如使用 ucnv_getAvailableName,但它 returns 转换器的名称似乎不适用于 uscdet_setDetectableCharset(除非我弄错了)。

因此,我的问题是:如何将字符集检测过滤到可用的转换器?

我也想知道是否有办法使检测偏向 UTF-8(除了查看所有字符集检测结果),例如对于检测为 ISO-8859-1 的文件,即使文件中的所有字符都可以编码为 UTF-8.

(unless I made a mistake)

我错了

ucsdet_setDetectableCharset 将无法检测到的字符集的状态设置为失败(逻辑)。我没有重置失败状态,期望函数设置正确的状态(即成功时成功);然而,这不是 ICU 的工作方式,我忘记了。

重置状态让我在可检测和可转换之间有一些重叠。