2016-03-04 3 views
0

Попытка URL декодировать строку со специальными символами в ИО/объективном CURL-декодирования специальные символы - Aao

Строка "F% F6rv% E5nad"

Пытались метод, который использует

CFURLCreateStringByReplacingPercentEscapesUsingEncoding() 

и

[stringToConvert stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

Оба возвращает нуль.

Хочет вернуть "Förvånad"

+0

Правильно декодируются строка возвращает искаженную последовательность UTF-8. Таким образом, данная строка «Förvånad» неправильно закодирована. Для правильного кодирования процентов любая строка должна быть сначала представлена ​​как последовательность байтов UTF-8. Затем процентное кодирование применяется к октетам. См. [RFC 3986] (https://tools.ietf.org/html/rfc398) – CouchDeveloper

ответ

2

Строка Latin1 кодируется

NSString *string = @"f%F6rv%E5nad"; 
NSString *result = [string stringByReplacingPercentEscapesUsingEncoding:NSISOLatin1StringEncoding]; 
NSLog(@"%@", result); // förvånad 
+0

Эти коды также проверяются для UTF-8. – trojanfoe

+0

@trojanfoe Не на моей машине, ни на игровой площадке Swift, ни в ObjC – vadian

+0

Я использовал [эту страницу] (http://www.utf8-chartable.de/), чтобы проверить коды. Однако символы выше 0x7f требуют двух байтов для кодирования, поэтому я не думаю, что они могут быть UTF-8, поэтому я думаю, что вы правы. – trojanfoe

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