Delphi XE 10.2.3使用CEF4Delphi取网页元素时碰到nbsp;变问号?的处理
用CEF4Delphi取網頁元素時碰到ElementInnerText里含有" "
比如網頁源碼里是"內容 "取出來顯示就變成"內容?"
搜索大部分是說把" "替換成其它字符即可
但實際操作怎么也替換不了,就算變量為AnsiString也不行
最后用了以下方法解決
參考網頁:
https://blog.csdn.net/qq_29683707/article/details/80860904
關于 空格轉成正常空格‘ ’的方法
?1>先把字符串轉碼 let data = encodeURI(要轉化的值)
?2>接下來替換掉 空格 data = data .replace(/%C2%A0/g,'%20');
?3>再轉回來就ok了 data = decodeURI(data);
要用到encodeURI,找到Delphi版的
http://www.delphitop.com/html/zifuchuan/2599.html
?
方法1
user??Httpapp;?
HttpEncode(AnsiToUtf8('中文'));
方法2
uses
??IdURI;
..
begin
??S?:=?TIdURI.URLEncode(str);
//
??S?:=?TIdURI.URLDecode(str);
end;
使用方法2的TIdURI.URLEncode,程序出錯,原因不明
使用方法1成功
直接 TmpTitle:= HTTPEncode(TmpTitle); 即可
但編譯器提示警告
[dcc32 Warning] uMiniBrowser.pas(469): W1000 Symbol 'HTTPEncode' is deprecated: 'Use TNetEncoding.URL.Encode'
[dcc32 Warning] uMiniBrowser.pas(471): W1000 Symbol 'HTTPDecode' is deprecated: 'Use TNetEncoding.URL.Decode'
[dcc32 Hint] uMiniBrowser.pas(469): H2443 Inline function 'HTTPEncode' has not been expanded because unit 'System.NetEncoding' is not specified in USES list
[dcc32 Hint] uMiniBrowser.pas(471): H2443 Inline function 'HTTPDecode' has not been expanded because unit 'System.NetEncoding' is not specified in USES list
?
意思是HTTPEncode和HTTPDecode已經棄用請用TNetEncoding.URL.Encode和TNetEncoding.URL.Decode
點進HTTPEncode看看
function HTTPDecode(const AStr: string): string; beginResult := TNetEncoding.URL.Decode(AStr); end;function HTTPEncode(const AStr: string): string; beginResult := TNetEncoding.URL.Encode(AStr); end;其實就直接調用了
TNetEncoding.URL.Encode
所在單元是 System.NetEncoding
?
轉載于:https://www.cnblogs.com/samvon/p/10086475.html
總結
以上是生活随笔為你收集整理的Delphi XE 10.2.3使用CEF4Delphi取网页元素时碰到nbsp;变问号?的处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第二阶段第七次站立会议
- 下一篇: [源码和文档分享]基于VC++控制台实现