0

HTML エンコードされたテキストを含むことができるテキスト列を含む SQLite ファイルがあります。たとえば、 のような値を含めることができます#Sample。これは、表示時に#Sample ( &#35# 記号の HTML エンコーディング) になります。

ただし、 を使用してその列の値を読み取ると、sqlite3_column_text返されるテキストはdouble-encodedです。を取得する代わりに#Sample、返されるテキストは&ාSampleです。

データベースのエンコーディングが UTF8 であることを再確認し、他のすべてのエンコーディングと、これをデバッグする他の多くの明白な方法を試しましたが、なぜこれが起こっているのかわかりません。私の簡単な目的の C コードは以下のとおりです。誰が問題が何であるかを考えることができますか?

const char *c = (const char *)sqlite3_column_text(statement, 0);
NSString *stringValue = [NSString stringWithUTF8String:c];
4

1 に答える 1

0

SQLite は、入れた文字列を変更しません ( replace()のようなものを明示的に呼び出さない限り)。

したがって、問題はデータを挿入するコードにあります。二重エンコーディングはすでにそこに存在します。

于 2016-06-18T07:01:58.467 に答える