2010-06-12 134 views
0

需要UITableView的Unicode字符我有incude像 d和O项部分的NSString varibales,如果我做从SQLite数据库

cell.textLabel.text = person.name; 

,如果它包含这些字符之一cell.textlabel是空白!

我发现,如果我用

NSString *col1 = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)]; 

拉我的数据备份它拉回到零,但是使用deprectared方法

NSString *col1 = [NSString stringWithCString:(char *)sqlite3_column_text(compiledStatement, 0)]; 

显示字符!

任何想法?

+0

听起来像sqlite3_column_text正在使用MacRoman编码。你能转储内容在十六进制,看看它是否看起来像UTF8(Ð== \ xC3 \ x90,Õ== \ xC3 \ x95)或MacRoman。 – drawnonward 2010-06-21 22:45:20

+0

如何转储十六进制?我可以控制我的sqlite中的列格式,所以它应该是什么? – 2010-06-23 14:17:08

回答

1

其实玩过,并得到答案!

NSString *col1 = [NSString stringWithCString:(char *)sqlite3_column_text(compiledStatement, 0) encoding:NSASCIIStringEncoding]; 
0

Iirc,char是一个cstring,在您将UTF8多字节字符放入单个字节c字符串中的第一个sql中,这样将会是坏的,空的或不可预知的。

至于将UTF8放入标签中,由于存在亚洲语言应用程序,因此可以完成此操作。也许有一个你可以查看的教程。

+0

这并没有真正回答这个问题,我知道你说的东西,但为什么CString的工作和UTF8没有?忽略标签,当我NSLog()col1变量返回时(空),如果这些字符在字符串中的任何地方。 – 2010-06-15 05:41:19