0

我需要在具有 unicode 字符的 UITableViewCell 中显示文本;但是,它似乎只显示包含嵌入其中的 unicode 字符串的实际字符串。(例如:我的 UITableViewCell textLabel 显示 'Cari\u00F1na' 而不是 'Cariña'

我通过使用以下 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