【发布时间】:2014-11-21 12:57:31
【问题描述】:
以下代码适用于 Win32,无论如何,如果在 Android 或 iOS 上运行,它会引发异常。例外是:“目标多字节代码页中不存在 Unicode 字符的映射”
function GetURLAsString(aURL: string): string;
var
lHTTP: TIdHTTP;
lStream: TStringstream;
begin
lHTTP := TIdHTTP.Create(nil);
lStream := TStringstream.Create(result);//create('',EEncoding.utf8),not work
try
lHTTP.Get(aURL, lStream);
lStream.Position := 0;
result := lStream.readstring(lStream.Size);//error here
finally
FreeAndNil(lHTTP);
FreeAndNil(lStream);
end;
end;
【问题讨论】:
-
这里没有问题,请澄清。移动平台仅处理 UTF-16 unicode 字符串。
-
@LURD Indy 能够在移动平台上转换为 UTF-16(由操作系统特定的转换 API 支持)
-
注意:TIdHTTP.Create(nil) 可以缩写为 TIdHTTP.Create
-
@mjn,正如 Remy 所说,TStringStream 不能胜任这里的工作。
标签: android ios delphi unicode indy