Delphi REST 服务器返回UTF16编码转换成正常string


本文整理自网络,侵删。

 
</pre><pre code_snippet_id="76206" snippet_file_name="blog_20131121_2_2675795" name="code" class="javascript">{"result":["{\"ServerCount\":2,\"Servers\":[{\"ServerName\":\"\u672C\u573014\u670D\",\"ServerIP\":\"172.16.228.14:8000\"},{\"ServerName\":\"\u7535\u4FE1\u6D4B\u8BD5\u670D\",\"ServerIP\":\"12.23.34.45:8000\"}]}\r\n"]}


转换后效果



{"result":["{"servercount":2,"servers":[{"servername":"本地14服","serverip":"172.16.228.14:8000"},{"servername":"电信测试服","serverip":"12.23.34.45:8000"}]}
"]}








function wwChangeUTF8ToWideString(szJson :string):string;
  function XDigit(Ch : AnsiChar) : Integer;
  begin
    if (Ch >= '0') and (Ch <= '9') then
        Result := Ord(Ch) - Ord('0')
    else
        Result := (Ord(Ch) and 15) + 9;
  end;
  function wwUtfToString(szUtf: string):string;
  var
    I:Integer;
    Index:Integer;
    WChar:WideChar;
    WCharWord:Word;
    AChar:AnsiChar;
  begin
    WCharWord:=0;
    for i := 1 to Length(szUtf) do
      begin
        AChar := AnsiChar(szUtf[i]);
        WCharWord := WCharWord + XDigit(AChar) * Ceil(Power(16,4-i));
      end;
    WChar := WideChar(WCharWord);
    Result := WChar;
  end;
var
  Index:Integer;
  HexStr:String;
begin
  szJson := LowerCase(szJson);
  szJson := StringReplace(szJson, '\"', '"', [rfReplaceAll]);
  szJson := StringReplace(szJson, '\r', #10, [rfReplaceAll]);
  szJson := StringReplace(szJson, '\n', #13, [rfReplaceAll]);
  szJson := StringReplace(szJson, '\\', '\', [rfReplaceAll]);
 
  Index := PosEx('\u',szJson,1);
 
  while Index>0 do
  begin
    HexStr:=Copy(szJson,Index+2,4);
    wwUtfToString(HexStr);
    szJson := StringReplace(szJson, '\u'+HexStr, wwUtfToString(HexStr),[rfReplaceAll]);
    Index:=PosEx('\u',szJson,1);
  end;
 
  Result := szJson; // byWarrially 
end;


――――――――――――――――

原文链接:https://blog.csdn.net/warrially/article/details/16862853

相关阅读 >>

Delphi form的borderstyle属性

Delphi memo1双击选中的文字内容

Delphi 简单的英文数字字符串加密解密函数(不支持中文)

Delphi char数组、string和pchar的相互转换

Delphi使用hough变换查找直线

Delphi 调用外部 dll 中的函数(1. 早绑定)

Delphi xe firemonkey的stylebook皮肤控件的使用

Delphi获取句柄并发送消息

Delphi 有关pchar.strcopy的实验

Delphi tchart分析报告

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...