土耳其人物ios

时间:2013-02-11 09:25:22

标签: ios xcode utf-8

我是iOS编程新手。我正在开发一个应用程序,它从我的Web服务获取一些句子,我插入到我的本地数据库但是,一些句子包含土耳其字符,如; “ü,ğ,ç,ö”。我可以将这些字符插入到我的数据库中,但是当我将它们输出到UILabel时,它看起来像是:“≈üƒü√º√∂”。我试图转换为 NSUTF8StringEncoding ,但无济于事。

我有NSMutableArray,名为问题,其中包含一些土耳其字符。如何将此数组转换为NSUTF8String格式?

抱歉我的英语不好:)谢谢。

4 个答案:

答案 0 :(得分:1)

啊,我认为问题不是你需要转换你的数组 - 它是你显示字符串的方式。

检查此代码,其中包含一系列土耳其足球运动员:

NSMutableArray *questions = [[NSMutableArray alloc] initWithObjects:@"Emre Belözoğlu", @"Gökhan Gönül", @"Mevlüt Erdinç", @"Nuri Şahin", nil];

const char *utf8string = [[NSString stringWithFormat:@"%@", [questions objectAtIndex:0]] UTF8String];
self.title = [NSString stringWithUTF8String:utf8string];

它现在应该以正确的格式显示页面标题为“EmreBelözoğlu”。


问题可能是数据从SQLite解析到NSMutableArray的方式。以下是我为一级方程式应用程序实现的目标。

viewDidLoad我致电[self loadNamesFromDatabase];看起来像:

- (void)loadNamesFromDatabase
{
    NSString *file = [[NSBundle mainBundle] pathForResource:@"Formula1" ofType:@"sqlite"];
    sqlite3 *database = NULL;
    if (sqlite3_open([file UTF8String], &database) == SQLITE_OK) {
        sqlite3_exec(database, "select driver_id, driver_name, driver_nation, driver_team from drivers", MyCallback, drivers, NULL);
    }
    sqlite3_close(database);
}

和您看到的MyCallback函数如下:

static int MyCallback(void *context, int count, char **values, char **columns)
{
    NSMutableArray *drivers = (NSMutableArray *)context;
    NSString *columnName;
    NSString *columnValue;
    NSMutableDictionary * record = [NSMutableDictionary dictionary];
    for (int i=0; i < count; i++) {
        columnName = [NSString stringWithUTF8String:columns[i]];
        if (values[i]){
            columnValue = [NSString stringWithUTF8String:values[i]];
        }
        else{
            columnValue = @"";
        }
        [record setObject:columnValue forKey:columnName]; 
    }
    [drivers addObject:record];

    return SQLITE_OK;
}

其中driversNSMutableArray。这里的关键是stringWithUTF8String,您不需要使用顶部的代码,因为所有数据都应该正确编码,因此将正确显示。

答案 1 :(得分:0)

您可以尝试其他字体样式吗? e.g;

myLabel.font = [UIFont fontWithName:@"Futura" size:10];

在NSLog线上看起来如何?

答案 2 :(得分:0)

以下是另一种答案:

NSString *text  = brokenString;
NSData *data    = [text dataUsingEncoding: [NSString defaultCStringEncoding] ];
NSString *convertedToTurkishString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding ];

答案 3 :(得分:0)

const char * utfString = [strText cStringUsingEncoding:NSMacOSRomanStringEncoding];

相关问题