当我链接到MySql时,如果数据是中文,那么它会变为乱码

时间:2011-11-03 07:55:17

标签: mysql ios

我使用我的ios(Simutalor)链接到远程数据库。代码如下:

-(NSMutableArray*)query:(NSString *)sql
{
    if(!myconnect)
    {
        NSLog(@"Please connect first");
        return nil;
    }
    NSMutableArray *recordsArray = [[[NSMutableArray alloc] init] autorelease];
    mysql_query(myconnect, [sql UTF8String]);
    MYSQL_RES* result = mysql_store_result(myconnect);
    int num_rows = mysql_num_rows(result);
    int num_fields = mysql_num_fields(result);

    for(int i=0;i<num_rows;i++)
    {
        MYSQL_ROW row = mysql_fetch_row(result);
        NSMutableArray *recordArr = [[NSMutableArray alloc] init];

        for(int j=0;j<num_fields;j++)
        { 
        if (row[j]==nil) {
            j++;
            [recordArr addObject:@""];
            continue;
            }
        NSString* value= [NSString stringWithUTF8String:row[j]];
    NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
            [recordArr addObject:value];
        }       

        [recordsArray addObject:recordArr];
        [recordArr release];
    }
    return recordsArray;
}

如果值是中文,它将以'?'显示。我试过可能编码的方法,但我失败了。 为什么呢?

1 个答案:

答案 0 :(得分:0)

您需要检查前端和后端的字符编码。如果你的后端编码是正确的,你仍然需要纠正前端。