Этот рецепт в RFC2616, к сожалению, фальшивый. Кодированные слова RFC2047 явно не могут находиться ни в одном из мест, где вы можете использовать их в заголовке HTTP, поскольку они не основаны на атомах семейства RFC-822. Ссылка на 2047 была удалена из работы HTTPbis по будущим стандартам. Вы можете, конечно, использовать кодированные слова в качестве специальной формы кодирования для конкретного приложения, если хотите (но прямая UTF-8 base64 может быть проще).

ичок в вопросах, связанных с HTTP. Мой вопрос в разработке для iOS, я хотел бы отправить строку, используя заголовок HTTP, поэтому я использую:

[httpRequest setValue:@"nonEnglishString" forHTTPHeaderField:@"customHeader"];

Принимающим сервером является Python (Google App Engine), который сохраняет строковое значение в модели db как StringProperty, используя:

dataEntityInstance.nonEnglishString = unicode(self.request.headers.get('customHeader')

Однако проблема в том, что когда я пытаюсь отправить неанглийскую строку, например, корейскую, она сохраняется в заголовке HTTP следующим образом:

Customheader = "\Uc8fc\Uba39\Uc774 \Uc6b4\Ub2e4";

и когда он получен Google App Engine и сохранен в хранилище данных, он изменяется следующим образом:

??? ??

как будто он не может найти правильные символы для значения Unicode.

Разве это НЕ ВОЗМОЖНО или РАЗРЕШЕНО для отправки неанглийской строки с использованием HTTP-заголовка?

Если в моей iOS используется только setHTTPBody, он может передавать неанглийские строки и правильно сохранять в хранилище данных App Engine.

[httpRequest setHTTPBody:[httpBody dataUsingEncoding:NSUTF8StringEncoding]];

Но я просто не могу найти правильный путь для достижения той же цели, используя HTTP-заголовки, как, например, то, что делают многие API, такие как Foursquare, и сохраняя строки в правильных формах в хранилище данных Google App Engine на основе Python.

Ответы на вопрос(2)

Ваш ответ на вопрос