我知道这个问题是在这个网站上提出的,但是所有答案都不能解决问题。所以我再次在这里问我的问题。

我创建了一个sqlite数据库(通过Firefox Sqlite管理器工具),并将数据存储在越南语中。

CREATE TABLE "customer" ("cus_id" TEXT, "cus_name" TEXT, "cus_address" TEXT, "cus_phone" TEXT);

INSERT INTO "customer" VALUES('KH1','Trần Văn A','Hai Bà Trưng, quận 1','0908112233');
INSERT INTO "customer" VALUES('KH2','Lê Hoài B','Hai Bà Trưng, quận 1','0908112233');
INSERT INTO "customer" VALUES('KH3','Nguyễn Thành C','Hai Bà Trưng, quận 1','0908112233');

我的应用是iOS应用。用户搜索文字“Tran”
我尝试查询:
SELECT * FROM customer WHERE cus_name LIKE '%Tran%';

我尝试了另一种解决方案:
SELECT * FROM customer WHERE cus_name COLLATE UTF8CI LIKE '%Tran%';

但是我有0条记录。然后,我尝试了更多在Internet上找到的解决方案,但我也得到了0条记录。

请帮忙。谢谢。

最佳答案

您应该在数据库表中为非Unicode越南语值再创建一个字段。您将在该字段中搜索。

要删除越南语字符串中的符号:

#define specialCharacter @[@"áàạảãâấầậẩẫăắằặẳẵ",@"ÁÀẠẢÃÂẤẦẬẨẪĂẮẰẶẲẴ",@"éèẹẻẽêếềệểễ",@"ÉÈẸẺẼÊẾỀỆỂỄ",@"óòọỏõôốồộổỗơớờợởỡ",@"ÓÒỌỎÕÔỐỒỘỔỖƠỚỜỢỞỠ",@"úùụủũưứừựửữ",@"ÚÙỤỦŨƯỨỪỰỬỮ",@"íìịỉĩ",@"ÍÌỊỈĨ",@"đ",@"Đ",@"ýỳỵỷỹ",@"ÝỲỴỶỸ"];
#define replaceCharacter @"aAeEoOuUiIdDyY";

    +(NSString *)removeSign4VietnameseString : (NSString*)str
    {
        NSString *tempStr = str;
        //
        NSArray * _vietNameCharacter = specialCharacter;
        NSString * _replaceCharacter = replaceCharacter;
        for (int i = 0; i<_vietNameCharacter.count; i++) {
            NSString* cRe = [NSString stringWithFormat:@"%C",[_replaceCharacter characterAtIndex:i]];
            for (int j = 0; j<[[_vietNameCharacter objectAtIndex:i] length]; j++) {
                NSString* cOri = [NSString stringWithFormat:@"%C",[[_vietNameCharacter objectAtIndex:i] characterAtIndex:j]];
                tempStr = [tempStr stringByReplacingOccurrencesOfString:cOri withString:cRe];
            }
        }
        return [tempStr lowercaseString];
    }

关于ios - SQLite中的越南语Unicode文本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33406340/

10-11 23:42