TWebRequest의 콘텐츠 필드에서 실제 유니 코드 문자열을 검색하는 방법은 무엇입니까? 내가 입력 된 유니 코드 값을 얻기 위해 TWebRequest의 컨텐트 필드를 읽으려고 할 때 텍스트 대신에 실제 값 대신 스크램블 된 값이 표시됩니다. 내가 입력 한 정보는 Добро 이었지만 내용 필드에는 값 "оР± Ñ € ¾¾이 표시됩니다. Response contenttype은 text/html 및 charset = 'UTF-8'로 설정됩니다. 어떤 본문이 텍스트 상자에 입력 된 실제 값과 이것이 수정 될 수있는 이유를 보여주지 못합니다. 내가TWebRequest의 콘텐츠 필드에서 유니 코드 문자열 읽기
procedure TWebModule1.WebModule1HelloAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
s : string;
PageProducer1 : TPageProducer;
begin
Response.ContentType := 'text/html;charset=UTF-8';
s := Request.ContentFields.Text;
PageProducer1 := TPageProducer.Create(nil);
try
PageProducer1.HTMLFile := 'C:\Hello.tmpl';
PageProducer1.OnHTMLTag := PageProducer1HTMLTag;
Response.Content := PageProducer1.Content + ' ' + 'Entered string:' + s;
finally
PageProducer1.Free;
end;
end;
Hello.tmpl을 테스트했다
샘플 코드는 텍스트 상자를 가지고 있으며, 버튼
답장을 보내 주셔서 감사합니다. UTF8ToString은 완벽하게 작동하지만 charset이 UTF-8로 설정되어 있기 때문에 문자열은 ut8로 인코딩되어 있으며 유니 코드 문자열로 변환해야합니다. 어떤 방법이나 설정이 요청 개체에 자동으로 변환되도록 설정할 수 있습니까? – ravi12
HTTP 페이로드는 임의의 옥텟 시퀀스입니다. content-type (및 content-encoding) 필드는이를 해석하는 방법을 알려줍니다. 적절한 헤더 필드를 읽고 올바른 방법으로 페이로드를 처리하는 것은 응용 프로그램의 책임입니다. –
정상적으로 작동하지만 경고를 표시합니다 * W1058 'string'에서 'RawByteString'*으로 잠재적 인 데이터 손실이있는 암시 적 문자열 캐스트. Content 대신 RawContent를 사용하여이를 결합하면 경고가 사라집니다. –