나는 HTTP 관련 문제에 초보자입니다. 내 질문은 아이폰 OS 개발에, 내가 HTTP 헤더를 사용하여 문자열을 보내려고, 그래서 내가 사용하고 있습니다 :HTTP 헤더를 사용하여 영어 이외의 유니 코드 문자열을 보내는 방법은 무엇입니까?
[httpRequest setValue:@"nonEnglishString" forHTTPHeaderField:@"customHeader"];
수신 서버가 파이썬 (구글 앱 엔진)이며, DB에 문자열 값을 저장 사용 StringProperty 같은 모델 : 나는 한국처럼 영어가 아닌 문자열을 보내려고 할 때
dataEntityInstance.nonEnglishString = unicode(self.request.headers.get('customHeader')
그러나, 문제는이 같은 HTTP 헤더에 저장된 것입니다 :
Customheader = "\Uc8fc\Uba39\Uc774 \Uc6b4\Ub2e4";
,321 이 데이터 스토어에 구글 앱 엔진에서 수신 및 저장 때 0, 그것은 같은 것으로 바뀌 :
??? ??
는 유니 코드 값에 대한 적절한 문자를 찾을 수없는 것처럼.
HTTP 헤더를 사용하여 영어 이외의 문자열을 보낼 수 없습니까? 허용되지 않습니까?
iOS에서 setHTTPBody 만 사용하는 경우 영어 이외의 문자열을 전송하여 App Engine의 데이터 저장소에 올바르게 저장할 수 있습니다.
[httpRequest setHTTPBody:[httpBody dataUsingEncoding:NSUTF8StringEncoding]];
하지만 난 그냥
* (...)로 무엇을 의미합니까? RFC2047 자체에서 허용되는 경우 (*) *의 정의가 주어지면 의미가 없습니다. –
RFC 2047 섹션 5는 인코딩 된 단어가 RFC 822 'text', 'comment'및 'phrase'가있는 곳으로 갈 수 있다고 명시하지만 RFC 2616은 RFC 822 제품군 표준이 아니며 해당 항목과 일치하는 토큰이 없습니다. (TEXT 토큰이 있지만 동일한 정의가되어 있지 않습니다.) 명시 적으로 'quoted-string'에 들어가서는 안됩니다. RFC 2616에 정의 된 매우 유사한 'quoted-string'토큰이 있습니다. 이는 실제로 Content-Disposition 및 유사 매개 변수화 된 헤더로 인해 비 ASCII 문자를 가장 많이 넣고 싶은 곳입니다. – bobince
어쨌든, 표준 관점에서 이것은 이제 정리됩니다 : RFC 5987은 매개 변수화 된 헤더에서 비 ASCII를 인코딩하는 표준 방법을 제공하고 RFC 7230은 비 레거시 헤더를 ASCII로 권장합니다. – bobince