0

我刚刚接触到 D2009,并将它与我们现有的项目之一一起使用——它编译得很好,但是我刚刚拿起 DIRegEx 来在项目中使用一些正则表达式。

但是,它总是向 RawByteString 发出有关 String 的警告,反之亦然。例如

var
  Response : string;
begin
  Response := idHTTP.Get('http://www.somesite.com');
  DIRegEx.SetSubjectStr(Response);
  ......

现在,SetSubjectStr 参数是 RawByteString 类型,来自 idHTTP.Get 的响应只是字符串。这似乎很奇怪,我会,做

DIRegEx.SetSubjectStr(utf8string(Response));

或者

var
  Response : Utf8String;
begin
  Response := Utf8String(idHTTP.Get......);

我应该在这里做什么。

4

2 回答 2

2

由于 DIRegEx 显然不接受 Unicode 输入,因此您别无选择,只能将在线下载的数据转换为传递给 DIRegEx 的数据。在将最终数据传递给您之前,TIdHTTP 已经在内部进行了自己的从数据的原始编码(由服务器指定)到 Unicode 的转换。如果您想对服务器发送的原始字节进行操作,而不对其应用 TIdHTTP 的内部解释,那么您必须将 TMemoryStream 传递给 TIdHTTP 以接收原始输出,然后对它进行任何您需要的操作。

于 2009-07-13T22:29:45.010 回答
0

http://www.micro-isv.asia/2008/08/using-rawbytestring-effectively/可能有帮助吗?

于 2009-07-12T00:57:14.623 回答