【问题标题】:Need unicode characters in UITableView from SQLite database需要来自 SQLite 数据库的 UITableView 中的 unicode 字符
【发布时间】:2010-06-12 15:37:24
【问题描述】:

我有一些 NSString 变量,其中包含诸如 Ð 和 Õ 如果我这样做了

cell.textLabel.text = person.name;

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

我发现如果我使用

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

要拉回我的数据,它会拉回 null,但是使用已弃用的方法

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

显示字符!

有什么想法吗?

【问题讨论】:

  • 听起来 sqlite3_column_text 正在使用 MacRoman 编码。你能以十六进制转储内容,看看它看起来像 UTF8 (Ð == \xC3\x90, Õ == \xC3\x95) 还是 MacRoman。
  • 如何转储十六进制?我可以控制我的 sqlite 中的列格式,那应该是什么?

标签: iphone sqlite unicode nsstring uilabel


【解决方案1】:

其实玩了一圈,得到了答案!

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

【讨论】:

    【解决方案2】:

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

    至于把 UTF8 加到标签里,因为有亚洲语言的应用程序,所以可以定义。也许有一个你可以查找的教程。

    【讨论】:

    • 这并不能真正回答问题,我知道你在说什么,但为什么 CString 有效而 UTF8 无效?忽略标签,当我 NSLog() col1 变量时,如果这些字符在字符串中的任何位置,它将返回 (null)。
    猜你喜欢
    • 2016-01-08
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 2016-07-31
    • 1970-01-01
    • 2013-04-26
    相关资源
    最近更新 更多