0

HTMLコンテンツ(箇条書きなどの特殊文字を含む)をSQLiteデータベースに挿入しています。

ビューにコンテンツを表示しようとすると、特殊文字が正しく表示されません。ジャンクテキストが表示されます。

データベースに挿入するテキストが何であれ、ビューに正しく表示されるようにするにはどうすればよいですか。

ありがとう!

私の挿入コード:

//このクエリメソッドの実装は別のファイルにあります

- (NSArray *)executeQuery:(NSString *)sql arguments:(NSArray *)args {
    sqlite3_stmt *sqlStmt;

    if (![self prepareSql:sql inStatament:(&sqlStmt)])
        return nil;

    int i = 0;
    int queryParamCount = sqlite3_bind_parameter_count(sqlStmt);
    while (i++ < queryParamCount)
        [self bindObject:[args objectAtIndex:(i - 1)] toColumn:i inStatament:sqlStmt];

    NSMutableArray *arrayList = [[NSMutableArray alloc] init];   // By Devang
    int columnCount = sqlite3_column_count(sqlStmt);
    while ([self hasData:sqlStmt]) {
        NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
        for (i = 0; i < columnCount; ++i) {
            id columnName = [self columnName:sqlStmt columnIndex:i];
            id columnData = [self columnData:sqlStmt columnIndex:i];
            [dictionary setObject:columnData forKey:columnName];
        }
        [arrayList addObject:dictionary];

        //[arrayList addObject:[dictionary autorelease]];
    }

    sqlite3_finalize(sqlStmt);

    return arrayList;
}

//このファイルのオブジェクトを作成してこのメ​​ソッドを呼び出す

NSString *inserQuery =[NSString stringWithFormat:@"insert into feedtest (title,summary,image,id) values ('%@','%@','%@',%d)",cell.textLabel.text,source,returnURL,indexPath.row];
        NSLog(@"query - %@",inserQuery);

    [database executeQuery:inserQuery];

//データを取得します

NSString *sd=[NSString stringWithFormat:@"Select title,summary from feedtest"];

    NSMutableArray *p=[[NSMutableArray alloc]init];
    p=[[database executeQuery:sd ] mutableCopy];
    [database close];

    NSString *titleHTML = [[p objectAtIndex:i]valueForKey:@"title"];
    NSString *postHTML =[[p objectAtIndex:i]valueForKey:@"summary"];
    NSLog(@"%@",titleHTML);
    NSLog(@"%@",postHTML);
4

1 に答える 1

5

FireFoxプラグインSQLiteを使用してローカルデータベースを確認できます。しかし、取得時に、ストレージに存在するものが適切に機能しないなどの奇妙な問題に直面することがあり、場合によってはクラッシュが発生します。だから私の提案はあなたがエンコーディングスキームをチェックするべきものであり(通常、それはそれ以上重要ではありません)そしてデータを取得している間これを使用してください:

[NSString stringWithFormat:@"%s",(const char*)sqlite3_column_text(statement, 4)] ;

それ以外の:

[NSString stringWithUTF8String:(const char*)sqlite3_column_text(statement, 4)];

願わくば、これがあなたが探しているものです。どんな懸念も私に返ってきます。:)

于 2012-11-30T05:02:53.513 に答える