SQLite MYSQL кодировка символов - PullRequest
1 голос
/ 10 марта 2011

У меня странная ситуация, когда следующий код работает, однако XCode предупреждает, что он устарел ...

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

Однако, так как это устаревший метод, если я установил кодировку, строка получилась неправильной! Я перепробовал все кодировки, но ни одна не работает!

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

enter image description here

Ответы [ 4 ]

4 голосов
/ 16 марта 2011

Я бы ожидал, что предложение сатиры сработает, однако вот версия какао, которую я использую:

Если вы имеете дело с 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];
0 голосов
/ 25 сентября 2014

Попробуйте, у меня это работает для кодировки UTF8

char *chars = (char*)sqlite3_column_text(compiledStatement, col);
NSString *str = [NSString stringWithCString:chars encoding:NSUTF8StringEncoding];
0 голосов
/ 19 марта 2011

Сначала убедитесь, что запись в базе данных содержит одинаковые римские слова или нет.

NSString *strtemp = [NSString stringWithCString:(char *)sqlite3_column_text(compiledStatement, 0)]; strtemp=[strtemp stringByAddingPercentEscapesUsingEncoding:NSMacOSRomanStringEncoding];

NSMacOSRomanStringEncoding определенно будет работать. У меня такая же проблема.

0 голосов
/ 10 марта 2011

попробовать NSString * col1 = [NSString stringWithUTF8String: (char *) sqlite3_column_text (compiledStatement, 0)];

если ваша база данных закодирована с utf8

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...