【问题标题】:Danish language support database in iphoneiphone中的丹麦语支持数据库
【发布时间】:2012-02-09 23:03:51
【问题描述】:

我正在开发一个 iphone 应用程序,在该应用程序中我必须使用预先捆绑在 sqlite 中的丹麦语。我有 excelsheet (.csv) 格式的丹麦语数据,我必须将其导入 sqlite 数据库。但是丹麦语有一些我无法检索的特殊字符,因为它似乎在 excelsheet 中。您能否建议我如何实现这一点并使用丹麦语 sqlite 数据库。

谢谢。

【问题讨论】:

标签: iphone objective-c sqlite


【解决方案1】:

这里是一些 python 代码,它创建一个 sqlite 脚本,以根据 csv 文件的内容创建并插入到表中。它导入一个名为feeds.csv 的文件,这是一个; 分隔的UTF8 文件,用通用换行符(U) 打开(这是为了在Mac 上读取时支持DOS 样式文件)。

有问题的文件有一个初始行,其中包含列名,这些列名填充到由代码构造的data 表中。

脚本的输出是一个可以使用命令sqlite foo.db <output 执行的文件。放入 .db 文件的数据将是原生 UTF8。

#!/usr/bin/python

import csv

reader = csv.reader(open("feeds.csv", 'rU'), delimiter=';')

printed_header = None
num_cols = None

for row in reader:
    if not printed_header:
        num_cols = 0
        print "create table data (",
        for col in row:
            if len(col) > 0:
                num_cols += 1
                if (num_cols > 1):
                    print ",",
                print "%s varchar" % col, 
        print ");"
        printed_header = True
        continue
    else:
        print "insert into data values (",
        pcol = 0
        for col in row:
            if len(col) > 0:
                if pcol > 0:
                    print ",",
                pcol += 1
                print "'%s'" % col.replace("'", "''"),
        print ");"

【讨论】:

    【解决方案2】:

    试试这个

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    
    NSString *filePath = [documentsDirectory stringByAppendingPathComponent:CSV_FILE_NAME];
    NSFileManager *fm = [NSFileManager defaultManager];
    
    NSData *data=[fm contentsAtPath:filePath];
    NSString* newStr = [NSString stringWithUTF8String:[data bytes]];
    

    【讨论】:

      【解决方案3】:

      当您要在 db 中输入值时,将它们转换为

      $(char *)[str cStringUsingEncoding:NSUTF8StringEncoding] 
      

      【讨论】:

      • 但我的数据将预先捆绑在应用程序中,而不是以编程方式插入数据。我有 excelsheet (.csv) 格式的丹麦语数据,我必须将其导入 sqlite 数据库。
      • ok 意味着当你要阅读 excelsheet(.csv) 格式时它会给出错误。对吗?
      • 是的,你是对的,你能给我一些解决方案吗
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-15
      相关资源
      最近更新 更多