【问题标题】:iOS how to decoding a text that is ISO6937 encoded?iOS如何解码ISO6937编码的文本?
【发布时间】:2015-05-07 09:07:34
【问题描述】:

我正在实现一个电视解析器软件。

在捷克时,我发现 EPG 是由 ISO6937 编码的。

我使用以下 API 解码并切换到 NSString

- (instancetype)initWithBytes:(const void *)bytes length:(NSUInteger)len encoding:(NSStringEncoding)encoding;

但我找不到编码 ENUM。 CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingISOLatin2) 不正确。

有人可以帮我吗?

【问题讨论】:

  • 嗯,这看起来很难。您可能需要使用其他库将 ISO6937 转换为 UTF-8,然后才能使用它。
  • 您所说的“不正确”是什么意思?它不工作还是给出错误?
  • @x4h1d 我很确定这意味着kCFStringEncodingISOLatin2 不是他正在寻找的编码(ISO-6937
  • @x4h1d,我可以得到一个字符串,但是内容会有一些错误。例如,0xcf 字符用作重音符号,但它会显示为字符。
  • 我遇到了同样的问题。你找到解决办法了吗?

标签: ios encoding character-encoding


【解决方案1】:

如果您提到的编码不起作用,请尝试以下编码

CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingMacCentralEurRoman)

NSISOLatin2StringEncoding

同时查看this 的帖子。

编辑

这里是 iOS8.3 支持的编码列表。负责任地尝试。

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 */

【讨论】:

  • 这些都不是 ISO-6937,不是吗。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-23
  • 2021-12-13
  • 2013-04-05
相关资源
最近更新 更多