在希伯来语中查询过滤器时出错

时间:2013-09-17 22:03:03

标签: objective-c sqlite

我有以下代码:

NSMutableArray *getDatosSelect=nil;
NSMutableString *consulta=[[NSMutableString alloc]init];
[consulta appendString:@"SELECT idOzDiccionario, espanyol, ingles, hebreo, fonetica FROM ozdiccionario WHERE UPPER(ingles) LIKE 'FRIEND%'"];
if ( sqlite3_prepare_v2(sql,[consulta UTF8String],[consulta length],&resultado,&siguiente) == SQLITE_OK ){
    getDatosSelect=[[NSMutableArray alloc] init];
        while (sqlite3_step(resultado)==SQLITE_ROW){
            NSMutableArray *datos=[[NSMutableArray alloc] init];
        for (int x=0; x<sqlite3_column_count(resultado); x++) {
            char *pChar=(char *)sqlite3_column_text(resultado, x);
            if (pChar!=nil) {
                [datos addObject:[NSString stringWithUTF8String: pChar]];
            }
        }
        [getDatosSelect addObject:datos];
        datos=nil;
    }
}else {
    NSString *errores=[NSString stringWithFormat:@"%s", sqlite3_errmsg(sql)];
        NSLog(@"%@ %@",TAG,errores);
}
如果我运行其他代码

运行正常

NSMutableArray *getDatosSelect=nil;
NSMutableString *consulta=[[NSMutableString alloc]init];
[consulta appendString:@"SELECT idOzDiccionario, espanyol, ingles, hebreo, fonetica FROM ozdiccionario WHERE hebreo='חבר'"];
if ( sqlite3_prepare_v2(sql,[consulta UTF8String],[consulta length],&resultado,&siguiente) == SQLITE_OK ){
    getDatosSelect=[[NSMutableArray alloc] init];
    while (sqlite3_step(resultado)==SQLITE_ROW){
        NSMutableArray *datos=[[NSMutableArray alloc] init];
        for (int x=0; x<sqlite3_column_count(resultado); x++) {
            char *pChar=(char *)sqlite3_column_text(resultado, x);
            if (pChar!=nil) {
                [datos addObject:[NSString stringWithUTF8String: pChar]];
            }
        }
        [getDatosSelect addObject:datos];
        datos=nil;
    }
}else {
    NSString *errores=[NSString stringWithFormat:@"%s", sqlite3_errmsg(sql)];
        NSLog(@"%@ %@",TAG,errores);
}

我收到以下错误:

  

无法识别的令牌:“”◊³◊◊“

当方法将字符串转换为UTF8字符

时,会发生此错误

为什么呢?有什么问题?

1 个答案:

答案 0 :(得分:3)

您已使用[consulta length]作为consulta中的字节数。这是不正确的。 length是字符数。字节数可能更多,希伯来语一般都是。要获得长度,您需要使用:

[consulta lengthOfBytesUsingEncoding:NSUTF8StringEncoding];

您的查询可能会被截断,因此根据其确切内容,它们可能会也可能不会发挥作用。