2015-03-22 8 views
-1

У меня есть строка с акцентом é в моей базе данных, когда я беру эту строку там и сохранил его в NSArray вместо он сохранить строку é экономит «\ U00e9» ,Encode NSArray перед сохранением

Если я поместил эту строку в UITextField, система помещает строку с акцентом. Но у этого кода есть проблема! Мне нужно отправить эту строку на другое устройство (с помощью рамки), и для этого я делаю следующим образом:

NSData *data = [[NSData alloc] init]; 
data = [NSKeyedArchiver archivedDataWithRootObject:array];//The array contain the string in database 

NSArray *arrayReceived = [NSKeyedUnarchiver unarchiveObjectWithData:data]; 

Внутри NSArray есть строка \ U00e9, но мне нужно, чтобы сохранить эту строку в моей базе данных это я должен найти способ конвертировать строку '\ U00e9' в строку é перед сохранением в базу данных снова! Как это сделать?

+2

Как вы видите '\ u00e9'? Вам нужно понять, что это может быть только * вид * символа, представляющего эту версию с экранированным unicode, когда на самом деле символ отлично кодируется в строке (например, с использованием UTF-8). Мне не кажется, что что-то не так. – trojanfoe

ответ

1

У вас действительно нет проблем. Ваши é и \u00e9 - это то же самое, вы можете просто подумать о них как о том, как описывается по-разному.

См. this page для описания юникода для é.

Предполагая, что система/система, отправленные закодированным массивом, использует ее разумным способом (например, с учетом содержимого юникода), тогда все будет в порядке. Тот факт, что вы используете NSKeyedArchiver для кодирования NSArray, указывает на то, что это действительно так.

В принципе, имейте в виду, что NSLog и дисплей UI - это разные вещи. NSLog дает вам очень грубое представление данных, тогда как пользовательский интерфейс дает вам измененный вид данных.

Смежные вопросы