3

我已经完成了研究,但似乎没有找到明确的答案。

我的问题如下:我有一个 mysql 数据库,我将它(在脚本的帮助下)转换为 sqlite 数据库。在原始数据库(以及 sqlite)中,我发现了一些包含以下字符的条目:â€〜,’,ë,ñ,...(Windows-1252?)还有一些 HTML-代码。

我用原始的mysql DB在PHP中做了一个测试,只要我添加了content-type utf-8,字符就很好了,否则我会得到相同的奇怪字符â€〜,’,à «, ñ。

我在 iOS 中尝试过以下操作:

[[NSString alloc] initWithCString:(const char *) sqlite3_column_text(rs.statement.statement, 4) encoding:NSStringEncodingConversionExternalRepresentation];

[NSString stringWithUTF8String:[[[rs stringForColumn:@"tekst"] stringByDecodingHTMLEntities] cStringUsingEncoding:NSStringEncodingConversionExternalRepresentation]];
  • NSStringEncodingConversionExternalRepresentation
  • NSUTF8StringEncoding
  • NSISO2022JPStringEncoding
  • NSStringEncodingConversionAllowLossy
  • NSWindowsCP1252StringEncoding
  • ...

然后我发现了这个: MWFeedParser NSString+HTML

通过这些类,我能够将 HTML 和 ë 转换为 ë。另一方面,其他角色似乎不起作用。

那么,如何转换/编码/解码这些字符才能正常显示呢?

4

1 回答 1

1

您是否尝试先修复 HTML 编码?我想它是最后应用的。如果您能获得一些示例字符串,请编写一个快速而肮脏的测试应用程序,并尝试弄清楚编码是如何制作的。

1)您可以尝试此列表中的其他编码:

NSISOLatin1StringEncoding = 5,
NSISOLatin2StringEncoding = 9,
NSWindowsCP1251StringEncoding = 11,
NSWindowsCP1252StringEncoding = 12,
NSWindowsCP1253StringEncoding = 13,
NSWindowsCP1254StringEncoding = 14,
NSWindowsCP1250StringEncoding = 15,

2) 如果 Apple 没有提供正确的编码,但它是已知的编码,那么您可以使用 iconv(),它在 mac 和 iOS 上都可用。它几乎可以将每个字符串编码转换为几乎任何其他编码 - 它使用起来有点复杂,但您会在网上找到很多示例。

于 2012-07-17T12:08:41.123 回答