Thi*_*ien 3 delphi indy utf-8 character-encoding delphi-2010
使用Indy THTTP我获得了一个响应,Content-Type: text/html; charset=UTF-8并将其存储在一个TStringStream.如果我然后使用ReponseStream.ReadString(ResponseStream.Size),结果String不正确显示.我敢打赌这是因为Windows使用UTF-16.
我尝试了一些事情TEncoding.UTF8,并TEncoding.Convert只搞砸更加的结果(开始研究中国).
这是当前的代码:
var
LHTTP: TIdHTTP;
LResponseStream: TStringStream;
LResponse: String;
begin
LResponseStream := TStringStream.Create();
try
LHTTP := TIdHTTP.Create(nil);
try
LHTTP.Get('url', LResponseStream); // Returns 'h?llo'
finally
LHTTP.Free;
end;
LResponseStream.Position := 0;
LResponse := LResponseStream.ReadString(LResponseStream.Size);
ShowMessage(LResponse); // Make me pretty
finally
LResponseStream.Free;
end;
end;
Run Code Online (Sandbox Code Playgroud)
我应该改变什么来获得常规的Delphi String......?
TIdHTTP有一个重载版本的Get(),它返回一个String.它会将UTF-8解码为UTF-16:
LResponse := LHTTP.Get('url');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3245 次 |
| 最近记录: |