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;

  

 

 

问题解决!

 

  

posted on   西点肥牛  阅读(120)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性

导航

< 2025年2月 >
26 27 28 29 30 31 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 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示