Разница между "+" и "% A0" - urlencoding? - PullRequest
10 голосов
/ 31 мая 2011

Я URL, кодирующий строку текста для передачи функции.Тем не менее, он кодирует второй пробел в двойном пробеле как "% A0".Это означает, что когда я декодирую строку, «% A0» отображается в виде черного знака в виде вопросительного знака.

Мне действительно нужно просто удалить лишний пробел, но я бы хотелпонять, что является причиной этого и как правильно с ним справиться.

Например:

Something  Something else

Кодирует:

Something+%A0Something+else

Ответы [ 4 ]

16 голосов
/ 31 мая 2011

%A0 обозначает NBSP (U + 00A0).+ обозначает нормальный пробел (U + 0020).NBSP отображается как символ замены (U + FFFD), поскольку кодировка символа не соответствует кодировке страницы, поэтому его последовательность байтов недопустима для страницы.

4 голосов
/ 31 мая 2011

Быстрый поиск в Google показывает, что %A0 - это символ неразрывного пробела или   в html.+ - это кодировка формы для стандартного пробела.

Источник

1 голос
/ 31 мая 2011

Проблема, с которой вы столкнулись, заключается в том, что второй «пробел» - это на самом деле не пробел, это символ, который у этого шрифта нет глифа (я думаю, что это термин) для представления (отсюда черный ящик с вопросительный знак). %A0 является escape-кодом для этого символа. Ваш код технически обрабатывает его правильно, я думаю, что проблема в том, что генерирует строку в первую очередь.

0 голосов
/ 31 мая 2011

Если я ссылаюсь на таблицу на этой странице ,% A0 ​​не является пробелом. % 20 - закодированное значение космического символа.

...