1

私はiOSプログラミングに不慣れです。ローカルデータベースに挿入するWebサービスからいくつかの文を取得するアプリを開発していますが、一部の文には次のようなトルコ語の文字が含まれています。「ü、ğ、ç、ö」。これらの文字をデータベースに正常に挿入できますが、出力するとUILabel「≈üƒü√º√∂」のようになります。NSUTF8StringEncodingに変換しようとしましたが、役に立ちませんでした。

いくつかのトルコ語の文字を含むNSMutableArray、名前付きの質問があります。この配列をNSUTF8String形式に変換するにはどうすればよいですか?

私の悪い英語でごめんなさい:)ありがとう。

4

4 に答える 4

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];

ページのタイトルが「Emre Belözoğlu」として正しいフォーマットで表示されるはずです。


あるいは、データが SQLite から .xml に解析される方法に問題がある可能性がありますNSMutableArray。Formula 1 アプリでそれを達成した方法を次に示します。

私は次のよう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、すべてのデータが適切にエンコードされ、正しく表示されるため、上部のコードを使用する必要がないことです。

于 2013-02-11T09:56:27.267 に答える
0

別の答えは次のとおりです。

NSString *text  = brokenString;
NSData *data    = [text dataUsingEncoding: [NSString defaultCStringEncoding] ];
NSString *convertedToTurkishString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding ];
于 2014-01-23T22:22:07.467 に答える
0

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

于 2014-09-05T14:34:50.663 に答える
0

別のフォント スタイルをお試しいただけますか。例えば;

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

そして、NSLog の行には何が表示されますか?

于 2013-02-11T09:41:41.393 に答える