1

我偶然发现使用 PDDScanner 在 PDF 中搜索西里尔字母(以及任何其他非 ASCII)字符。我使用的代码类似于 Randon Ideas 博客中提到的 SO 代码。问题在于,对于西里尔 PDF,scanner 的输出是完全垃圾,无法解码为任何有意义的东西。西里尔 PDF 中的英文字符被完美地搜索。所以,问题在于,当涉及到西里尔文时,它是被编码的,我们不知道如何正确解码它。

我们在这里想念什么?

提前感谢任何可以阐明该主题的人。

4

2 回答 2

1

您是否尝试过通过不同的编码推送该字符串?当我查看时NSString.h,我看到一些可疑标记为“西里尔字母”的东西,在同一行上也有“Adobe”:)(即尝试NSWindowsCP1251StringEncoding

enum {
    NSASCIIStringEncoding = 1,      /* 0..127 only */
    NSNEXTSTEPStringEncoding = 2,
    NSJapaneseEUCStringEncoding = 3,
    NSUTF8StringEncoding = 4,
    NSISOLatin1StringEncoding = 5,
    NSSymbolStringEncoding = 6,
    NSNonLossyASCIIStringEncoding = 7,
    NSShiftJISStringEncoding = 8,          /* kCFStringEncodingDOSJapanese */
    NSISOLatin2StringEncoding = 9,
    NSUnicodeStringEncoding = 10,
    NSWindowsCP1251StringEncoding = 11,    /* Cyrillic; same as AdobeStandardCyrillic */
    NSWindowsCP1252StringEncoding = 12,    /* WinLatin1 */
    NSWindowsCP1253StringEncoding = 13,    /* Greek */
    NSWindowsCP1254StringEncoding = 14,    /* Turkish */
    NSWindowsCP1250StringEncoding = 15,    /* WinLatin2 */
    NSISO2022JPStringEncoding = 21,        /* ISO 2022 Japanese encoding for e-mail */
    NSMacOSRomanStringEncoding = 30,

    NSUTF16StringEncoding = NSUnicodeStringEncoding,      /* An alias for NSUnicodeStringEncoding */

    NSUTF16BigEndianStringEncoding = 0x90000100,          /* NSUTF16StringEncoding encoding with explicit endianness specified */
    NSUTF16LittleEndianStringEncoding = 0x94000100,       /* NSUTF16StringEncoding encoding with explicit endianness specified */

    NSUTF32StringEncoding = 0x8c000100,                   
    NSUTF32BigEndianStringEncoding = 0x98000100,          /* NSUTF32StringEncoding encoding with explicit endianness specified */
    NSUTF32LittleEndianStringEncoding = 0x9c000100        /* NSUTF32StringEncoding encoding with explicit endianness specified */
};
于 2012-04-09T14:41:26.393 回答
0

您可能需要更深入地了解Apple 规范和标题- 添加 NSLog 行(并在此处发布)以获取扫描仪为普通 PDF 和西里尔文找到的内容。有很多可能性(可能是不同的编码,即您需要使用该编码将您拥有的字符串转换为不同的字符串)。我确信有一种方法可以列出表中的所有运算符,以查看您的西里尔 pdf 中是否有额外的运算符。此外,这可能有助于您尝试解决一个非常相似的问题 - 它指向一个更适合扫描的库

于 2012-04-07T11:44:42.607 回答