Кодирование NSString Objective-C Umlauts - PullRequest
2 голосов
/ 29 ноября 2011

У меня есть следующая проблема:

Я ввожу данные в UITextField, а затем хочу отправить их на сервер. Но данные, которые я ввожу, могут содержать умлауты (ö, ä, ü,…). Тогда я получаю неправильную кодировку при передаче его на сервер. Но я кодирую его с помощью UTF8.

NSString *s = @"ö";
NSLog(@"%@", s);
NSLog(@"%s", s.UTF8String);

Что я делаю не так? Во второй строке я вижу прекрасно "ö", но в третьей строке я вижу это: √∂

В Интернете много постов с кодировкой, но проблема не решена.

Ответы [ 2 ]

1 голос
/ 29 ноября 2011

При работе с UTF8 и NSString вам, вероятно, следует использовать [@"ö" dataUsingEncoding:NSUTF8StringEncoding] для получения объекта NSData, который вы можете отправить по сети.Это всегда будет работать нормально.

1 голос
/ 29 ноября 2011

Правильно ли вы кодируете или расшифровываете вещи при общении с сервером?

Помните, что NSString обладает такими замечательными функциями:

stringByAddingPercentEscapesUsingEncoding:

и

stringByReplacingPercentEscapesUsingEncoding:

Что касается просмотра мусора в этом третьем выводе строки NSLog, то "% s" в формате означает, что NSLog ожидает стиль Cколлекция байтов, и он не сможет правильно отображать значения высокого ascii.Принимая во внимание, что формат «% @» в NSLogs означает объекты NSString, и все строковые кодировки должны работать должным образом для этого.

...