TWebRequestのコンテンツフィールドから実際のUnicode文字列を取得する方法を教えてください。私が入力Unicode値を得るためにTWebRequestのコンテンツフィールドを読み込もうとすると、テキストに入力しましたが、実際の値の代わりにスクランブルされた値が表示されます。 私が与えた入力はДоброでしたが、内容フィールドには値Ð "обр¾¾があります。レスポンスcontenttypeはtext/htmlとcharset = 'UTF-8'に設定されています。 テキストボックスに入力された実際の値が表示されないのはなぜですか?私はTWebRequestのコンテンツフィールドからUnicode文字列を読み取る
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は完全に機能しますが、文字セットはUTF-8に設定されているため、文字列はut8でエンコードされており、ユニコード文字列に変換する必要があります。 Requestオブジェクトに設定できる方法や設定はありますか?それは自動的に変換を行います。 – ravi12
HTTPペイロードは任意の八重奏のシーケンスです。 content-type(およびcontent-encoding)フィールドは、その解釈方法を示します。適切なヘッダーフィールドを読み、正しい方法でペイロードを処理するのはアプリケーションの責任です。 –
これは正しく動作しますが、警告を出します* W1058 'string'から 'RawByteString'への潜在的なデータ損失を伴う暗黙的な文字列キャスト*。コンテンツの代わりにRawContentを使用すると、警告が消えます。 –