2014-11-12 5 views
0

Мне нужно отправить символы Юникода в базу данных. База данных, которую я использую, получает NSDictionary и сохраняет ее как JSONObject.NSDictionary Публикация символов Unicode

Словаря создается как:

NSMutableDictionary *messageDictionary = [[NSMutableDictionary alloc] init ]; 

[messageDictionary setObject:@"message" forKey:@"type"]; 
[messageDictionary setObject:@"È ê ü à ã" forKey:@"message"]; 

баз данные затем сохраняет результат в виде:

{ 
    type = message; 
    message = \"\\U00c8 \\U00ea \\U00fc \\U00e0 \\U00e3\"; 
} 

если я отправляю только строку за пределами словаря баз данных хранят:

{ 
    message = È ê ü à ã 
} 

Как я могу препятствовать NSDictionary редактировать эти символы и хранить их одинаково они вводятся в текстовый вид. То же самое происходит при вводе Emoji в текстовый вид и его отправке. Ответ мне нужно хранить это:

{ 
    type = messages; 
    message = "È ê ü à ã"; 
} 

ответ

1

Переход от @"È ê ü à ã" к @"\U00c8 \U00ea \U00fc \U00e0 \U00e3" является не что-то NSDictionary делает, поэтому я бы предположить, что это делается с помощью кодера JSON.

Я бы ожидал, что декодер JSON вернет их в исходную форму, поэтому ответ будет заключаться в использовании хорошего JSON-декодера («хорошим» я имею в виду «тот, который работает»).

Процитирую ответ на this question:

2.5. Строки

Представление строк аналогично соглашениям, используемым в семействе языков программирования C. Строка начинается и заканчивается кавычками. Все символы Юникода могут быть помещены в кавычки, за исключением символов, которые должны быть экранированы: кавычка, обратный солидус и управляющие символы (U + 0000 через U + 001F).

Любые символы могут быть экранированы.

+0

Я неправильно интерпретировал NSLog с ответом сервера, извините. Обновлен мой вопрос с сохраненным сообщением с экранированными строками. Таким образом, это будет проблема на стороне сервера, которая меняет символы и не имеет отношения к NSDictionary? Если я размещаю только текст textview вместо словаря, я храню 'Ã Ã Ã ¼ Ã Ã''' –

+0

@GeorgeGrover Да. Разлочен декодер JSON на стороне сервера. – trojanfoe

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