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 パーサー?
前もって感謝します!!