3

私は調査を行いましたが、明確な答えが見つからないようです。

私の質問は次のとおりです。私は (スクリプトの助けを借りて) sqlite DB に変換する mysql DB を持っています。元の DB (および sqlite) で、次の文字を含むいくつかのエントリを見つけました。コード。

元の mysql DB を使用して PHP でテストを行ったところ、コンテンツ タイプ 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 が適切なエンコーディングを提供していないが、それが既知のエンコーディングである場合は、Mac と iOS の両方で利用可能な iconv() を使用できます。事実上すべての文字列エンコーディングを事実上他のエンコーディングに変換できます。使用するのは少し複雑ですが、ネット上で多くの例を見つけることができます。

于 2012-07-17T12:08:41.123 に答える