Iphone SQLite MYSQL字符编码
我有一个奇怪的情况,下面的代码可以工作,但是XCode警告它不推荐使用Iphone SQLite MYSQL字符编码,iphone,sqlite,nsstring,Iphone,Sqlite,Nsstring,我有一个奇怪的情况,下面的代码可以工作,但是XCode警告它不推荐使用 NSString *col1 = [NSString stringWithCString:(char *)sqlite3_column_text(compiledStatement, 0)]; 然而,由于这是不推荐使用的方法,如果我设置了编码,字符串就会出错!我已经尝试了所有的编码,但没有工作 NSString *col1 = [NSString stringWithCString:(char *)sqlite3_colu
NSString *col1 = [NSString stringWithCString:(char *)sqlite3_column_text(compiledStatement, 0)];
然而,由于这是不推荐使用的方法,如果我设置了编码,字符串就会出错!我已经尝试了所有的编码,但没有工作
NSString *col1 = [NSString stringWithCString:(char *)sqlite3_column_text(compiledStatement, 0) encoding:NSASCIIStringEncoding];
试试看
NSString*col1=[NSString stringWithUTF8String:(char*)sqlite3_column_text(compiledStatement,0)]
如果您的数据库使用utf8编码,请尝试
NSString*col1=[NSString stringWithUTF8String:(char*)sqlite3_column_text(compiledStatement,0)]
如果您的数据库使用utf8编码,我本以为satire的建议会起作用,但下面是我使用的Cocoa版本: 如果您正在处理utf16
int len = sqlite3_column_bytes16(compiledStatement, col) / 2;
unichar *chars = (unichar*)sqlite3_column_text16(compiledStatement, col);
NSString *str = [NSString stringWithCharacters:chars length:len];
如果您使用的是utf8
int len = sqlite3_column_bytes(compiledStatement, col);
char *chars = (char*)sqlite3_column_text(compiledStatement, col);
NSString *str = [NSString stringWithUTF8String:chars length:len];
我本以为讽刺的建议会奏效,但以下是我使用的可可版本: 如果您正在处理utf16
int len = sqlite3_column_bytes16(compiledStatement, col) / 2;
unichar *chars = (unichar*)sqlite3_column_text16(compiledStatement, col);
NSString *str = [NSString stringWithCharacters:chars length:len];
如果您使用的是utf8
int len = sqlite3_column_bytes(compiledStatement, col);
char *chars = (char*)sqlite3_column_text(compiledStatement, col);
NSString *str = [NSString stringWithUTF8String:chars length:len];
首先检查数据库中的条目是否包含相同的罗马单词
NSString*strtemp=[NSString stringWithCString:(char*)sqlite3_column_text(compiledStatement,0)];
strtemp=[strtemp stringByAddingPercentEscapesUsingEncoding:NSMacOSRomanStringEncoding]代码>
NSMacOSRomanStringEncoding肯定会起作用。我面临同样的问题。首先检查数据库中的条目是否包含相同的罗马单词
NSString*strtemp=[NSString stringWithCString:(char*)sqlite3_column_text(compiledStatement,0)];
strtemp=[strtemp stringByAddingPercentEscapesUsingEncoding:NSMacOSRomanStringEncoding]代码>
NSMacOSRomanStringEncoding肯定会起作用。我也面临同样的问题。试试这个,它对我的UTF8编码有效
char *chars = (char*)sqlite3_column_text(compiledStatement, col);
NSString *str = [NSString stringWithCString:chars encoding:NSUTF8StringEncoding];
试试这个,它适用于UTF8编码
char *chars = (char*)sqlite3_column_text(compiledStatement, col);
NSString *str = [NSString stringWithCString:chars encoding:NSUTF8StringEncoding];
恐怕不行,这会在注销时将任何带有特殊字符的内容返回为(null)。如何检查数据库编码?管理SQLite表的简单工具是一个名为SQLite Manager的javascript Firefox插件,您可以使用它从应用程序包打开数据库。要检查数据库编码,请参阅DBSettings选项卡。使用printf(“%s”,(char*)sqlite3_column_text(compiledStatement,0))
要查看从DateBase返回的char值printf在前几个entriesFraid not之后停止,则在NSLogging退出时,会将任何带有特殊字符的内容返回为(null)。如何检查数据库编码?管理SQLite表的简单工具是一个名为SQLite Manager的javascript Firefox插件,您可以使用它从应用程序包打开数据库。要检查数据库编码,请参阅DBSettings选项卡。使用printf(“%s”,(char*)sqlite3_column_text(compiledStatement,0))
要查看从DateBase返回的char值,printf在前几个条目之后停止