UTF-8编码的问题
在工作中,经常需要用到Restful的接口调用,由于往往是推送给对方数据,对方返回状态,所以,只需要给对方推送正确的UTF-8编码即可。这个在我之前的例子里已经有了。
但是最近调用一个接口的时候,发现对方返回给我的,也是UTF-8的编码。但这个UTF-8的字符串,通过UTFDecode转换后,部分汉字正常,部分出现乱码。
然后我用了几种方式,包括ByteBufferToAnsiString, TEncoding.Default.GetString 等,都没有解决问题。
最后突然想到,既然我推送的时候可以,为什么接受的时候不可以呢?我按照推送的方式处理呢?
于是,用推送时一样的方式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | function PostJson(strUrl : string ; strJson : string ): String ; var clHttpRequest: TclHttpRequest; clHttp: TclHttp; strHTML : TStringStream; begin clHttpRequest := TclHttpRequest . Create( nil ); clHttpRequest . Header . ContentType := 'application/json' ; clHttpRequest . Header . CharSet := 'UTF-8' ; clHttpRequest . BuildJSONRequest(strJson); clHttp := TclHttp . Create( nil ); clHttp . Request := clHttpRequest; strHTML := TStringStream . Create( '' , TEnCoding . UTF8) ; try clHttp . Post(strUrl, clHttpRequest, strHTML); except on E:Exception do begin Result :=E . Message; FreeAndNil(clHttpRequest); FreeAndNil(clHttp); Exit; end ; end ; Result := strHTML . DataString; FreeAndNil(strHTML); FreeAndNil(clHttpRequest); FreeAndNil(clHttp); end ; |
问题解决!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性