我是iOS编程新手。我正在开发一个应用程序,它从我的Web服务获取一些句子,我插入到我的本地数据库但是,一些句子包含土耳其字符,如; “ü,ğ,ç,ö”。我可以将这些字符插入到我的数据库中,但是当我将它们输出到UILabel
时,它看起来像是:“≈üƒü√º√∂”。我试图转换为 NSUTF8StringEncoding ,但无济于事。
我有NSMutableArray
,名为问题,其中包含一些土耳其字符。如何将此数组转换为NSUTF8String格式?
抱歉我的英语不好:)谢谢。
答案 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;
}
其中drivers
是NSMutableArray
。这里的关键是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];