URL, кодирующий пробел: + или% 20?

// Program to print a matrix in spiral order

#include <stdio.h>
int main(void) {
    // your code goes here
    int m,n,i,j,k=1,c1,c2,r1,r2;;
    scanf("%d %d",&m,&n);
    int a[m][n];
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            scanf("%d",&a[i][j]);
        }
    }
    r1=0;
    r2=m-1;
    c1=0;
    c2=n-1;

    while(k<=m*n)
                {
                    for(i=c1;i<=c2;i++)
                    {
                        k++;
                        printf("%d ",a[r1][i]);
                    }

                    for(j=r1+1;j<=r2;j++)
                    {
                        k++;
                        printf("%d ",a[j][c2]);
                    }

                    for(i=c2-1;i>=c1;i--)
                    {
                        k++;
                        printf("%d ",a[r2][i]);
                    }

                    for(j=r2-1;j>=r1+1;j--)
                    {
                        k++;
                        printf("%d ",a[j][c1]);
                    }

                 c1++;
                 c2--;
                 r1++;
                 r2--;
                }
    return 0;
}
651
задан Cole Johnson 6 June 2014 в 16:51
поделиться

2 ответа

Из Википедия (выделение и ссылка добавлены):

При отправке данных, которые были введены в формы HTML, имена и значения полей формы кодируются и отправляются к серверу в сообщении HTTP-запроса с использованием метода GET или POST, или, исторически, по электронной почте. Кодировка, используемая по умолчанию, основана на очень ранней версии общих правил процентного кодирования URI с количеством модификаций , таких как нормализация новой строки и замена пробелов на «+» вместо «%». 20 ". Тип данных MIME, закодированных таким образом, - application / x-www-form-urlencoded, и в настоящее время он определен (все еще очень устаревшим образом) в спецификациях HTML и XForms.

Итак, реальное процентное кодирование использует % 20 , тогда как данные формы в URL-адресах находятся в измененной форме, которая использует + . Таким образом, вы, скорее всего, увидите только + в URL-адресах в строке запроса после ? .

401
ответ дан 22 November 2019 в 21:42
поделиться

Я бы порекомендовал % 20 .

Вы их жестко кодируете?

Однако это не очень согласованно для разных языков. Если я не ошибаюсь, в PHP urlencode () обрабатывает пробелы как + , тогда как Python urlencode () обрабатывает их как % 20 .

РЕДАКТИРОВАТЬ:

Кажется, я ошибаюсь. Python urlencode () (по крайней мере, в 2.7.2) использует quote_plus () вместо quote () и, таким образом, кодирует пробелы как «+». Также кажется, что рекомендация W3C - это знак «+», как здесь: http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.1

И на самом деле , вы можете следить за этой интересной дискуссией о собственном трекере проблем Python о том, что использовать для кодирования пробелов: http://bugs.python.org/issue13866 .

РЕДАКТИРОВАТЬ №2:

Я понимаю что наиболее распространенный способ кодирования "" - это как "+", но просто примечание, это может быть только я, но я нахожу это немного запутанным:

import urllib
print(urllib.urlencode({' ' : '+ '})

>>> '+=%2B+'
23
ответ дан 22 November 2019 в 21:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: