我刚接触到D2009并将其与我们现有的一个项目一起使用 - 所有这些都编译得很好但是我刚刚选择了DIRegEx在项目中使用了一些正则表达式。
然而,它始终向StringByteString发出有关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......);
我应该在这做什么。
答案 0 :(得分:2)
由于DIRegEx显然不接受Unicode输入,因此您别无选择,只能执行从在线下载到传递给DIRegEx的数据的某种数据转换。在将最终数据传递给您之前,TIdHTTP已经在内部从数据的原始编码(由服务器指定)到Unicode进行自己的转换。如果你想对服务器发送的原始字节进行操作,而没有对其应用TIdHTTP的内部解释,那么你必须将TMemoryStream传递给TIdHTTP以接收原始输出,然后用它做任何你需要的事情。 / p>
答案 1 :(得分:0)