Delphi THttp客户端:帖子的IHttpResponse给出了在fiddler webview中看到的编码字符串

kq0g1dla  于 2022-12-23  发布在  其他
关注(0)|答案(1)|浏览(210)

我有一个THTTPClient在调用lHttpResp.ContentAsString()时给出了奇怪的响应(显然是UTF-16编码?)
字符串的形式如下:
㰀㼀砀洀氀 瘀攀爀猀椀漀渀㴀∀㄀⸀ ∀ 攀渀挀漀搀椀渀最㴀∀唀吀䘀ⴀ㄀㘀∀ 猀琀愀渀搀愀氀漀渀攀㴀∀礀攀猀∀㼀㸀਀㰀刀䔀匀唀䰀吀㸀਀    㰀倀䄀夀倀䄀䜀䔀唀刀䰀㸀栀琀琀瀀猀㨀⼀⼀攀攀⸀琀攀猀琀⸀瀀愀礀最愀琀攀眀愀礀⸀挀漀洀⼀䠀漀猀琀倀愀礀匀攀爀瘀椀挀攀⼀瘀㄀⼀栀漀猀琀瀀愀礀⼀瀀愀礀瀀愀最攀⼀㄀㘀㜀 㔀㘀㘀㈀㄀㔀㐀㌀㈀㐀欀䬀䬀儀㔀唀漀䈀椀吀氀㠀䔀爀䈀䴀 戀㰀⼀倀䄀夀倀䄀䜀䔀唀刀䰀㸀਀    㰀匀䔀匀匀䤀伀一吀伀䬀䔀一㸀㄀㘀㜀 㔀㘀㘀㈀㄀㔀㐀㌀㈀㐀欀䬀䬀儀㔀唀漀䈀椀吀氀㠀䔀爀䈀䴀 戀㰀⼀匀䔀匀匀䤀伀一吀伀䬀䔀一㸀਀㰀⼀刀䔀匀唀䰀吀㸀਀
运行Fiddler,我可以看到在原始或文本视图中的响应是好的,但在Webview中匹配上述编码。我可能错过了一些很明显的东西,但我已经尝试用TEncoding转换无效,根据以下线程:
Delphi - converting string back from UTF-8
Fiddler的文本视图给出了正确的文本:

<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<RESULT>
    <PAYPAGEURL>https://url/</PAYPAGEURL>
    <SESSIONTOKEN>1670565241202KKv4NPBBScANOL6rxbi</SESSIONTOKEN>
</RESULT>
n3schb8v

n3schb8v1#

一位同事帮我找到了TEncoding。BigEndianUnicode,这是我唯一没有尝试过的,因为我的视野太窄了。分辨率如下。谢谢你的输入。

lHttpResp.ContentAsString(TEncoding.BigEndianUnicode); //to get the result in text for testing etc
XmlFile.LoadFromStream(lhttpResp.ContentStream); //to load to an xmlfile

相关问题