0

Unicode 文字を含む UITableViewCell にテキストを表示する必要があります。ただし、表示されているように見えるのは、Unicode 文字列が埋め込まれた実際の文字列だけです。(例: 私の UITableViewCell textLabel は、'Cariña' の代わりに 'Cari\u00F1na' を表示します

次の Python スクリプトで utf-8 テキスト ファイルを解析して、sqlite3 データベースを作成します。

import sqlite3;
import csv;

conn = sqlite3.connect('varietals.sqlite3')
#conn.text_factory = str
c = conn.cursor()
c.execute('drop table if exists varietals')
c.execute('create table varietals(id integer primary key autoincrement, name VARCHAR, type VARCHAR)')


data = open("varietals.txt", "rU").readlines()
for row in data:
    vals = row.split(',')
    name = unicode(vals[0])
    t = unicode(vals[1])
    sql = "insert into varietals values(NULL,?,?)"
    c.execute(sql, [name, t])

conn.commit()

XCode では、標準の sqlite3 スクリプトを使用してデータベースを解析しています

 NSString *query = @"SELECT * FROM varietals ORDER BY type DESC";
sqlite3_stmt *statement;

if(sqlite3_prepare_v2(_database, [query UTF8String], -1, &statement, nil) == SQLITE_OK){

    while(sqlite3_step(statement) == SQLITE_ROW){

      //  int uniqueId = sqlite3_column_int(statement, 0);
        char *nameChars = (char *)sqlite3_column_text(statement, 1);
        char *typeChars = (char *)sqlite3_column_text(statement, 2);

        NSString *name = [NSString stringWithUTF8String:nameChars];
        NSString *type = [NSString stringWithUTF8String:typeChars];


        NSDictionary *varietal = [NSDictionary dictionaryWithObjectsAndKeys:name, @"name", type, @"type", nil];
        [retval addObject:varietal];

    }

    sqlite3_finalize(statement);
}

何をしても、textLabel に「name」(Cariña) を正しく表示させることができません。「Cari\u00F1na」が表示され続けます。ただし、「cellForRowAtIndexPath」メソッドでハードコードすると、次のようになります。 cell.textLabel.text = @"Cari\u00F1na"; 正しく表示されます。データベースファイルから動作させることができません。

私のpythonスクリプトに欠けているものはありますか?Sqlite パーサー?

前もって感謝します!!

4

0 に答える 0