Этот рецепт в 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.