项目中遇到需求需要把delphi里的字符串post到php的webservice接口,
delphi写json字符串时遇到双引号等符号时串出来的json传到php端会解析失败,经分析后发现需要对特殊字符进行unicode编码,
不多说,上干货
function TForm1.GetUniCode(AChar: String): String;
var
I: Integer;
WS: WideString;
Code: Word;
Codes: String;
begin
WS := AChar;
Codes := '00';
for I := 1 to Length(WS) do
begin
Move(WS[I], Code, SizeOf(Code));
Codes := Codes + IntToHex(Code, 2);
end;
Result := '\u' + Codes;
end;
function TForm1.GetEnCodeStr(AStr: String): String;
var
sResult, AChar: string;
lstChar: TStringlist;
i: Integer;
begin
sResult := AStr;
lstChar := TStringlist.Create;
lstChar.Add('\');
lstChar.Add('"');
lstChar.Add('''');
lstChar.Add('&');
for i := 0 to lstChar.Count -1 do
begin
sResult := AnsiReplaceStr(sResult ,lstChar[i], GetUniCode(lstChar[i]));
end;
// sResult := HTTPEncode(UTF8Encode(AStr));
// sResult := AnsiReplaceStr(sResult ,'\', '\u005c');
// sResult := AnsiReplaceStr(sResult ,'"', '\u0022');
// sResult := AnsiReplaceStr(sResult ,'''', '\u0027');
result := sResult;
lstChar.Free;
end;
其中GetUniCode是对字符进行转义成unicode,对特殊字符这样处理即可
delphi写json字符串时遇到双引号等符号时串出来的json传到php端会解析失败,经分析后发现需要对特殊字符进行unicode编码,
不多说,上干货
function TForm1.GetUniCode(AChar: String): String;
var
I: Integer;
WS: WideString;
Code: Word;
Codes: String;
begin
WS := AChar;
Codes := '00';
for I := 1 to Length(WS) do
begin
Move(WS[I], Code, SizeOf(Code));
Codes := Codes + IntToHex(Code, 2);
end;
Result := '\u' + Codes;
end;
function TForm1.GetEnCodeStr(AStr: String): String;
var
sResult, AChar: string;
lstChar: TStringlist;
i: Integer;
begin
sResult := AStr;
lstChar := TStringlist.Create;
lstChar.Add('\');
lstChar.Add('"');
lstChar.Add('''');
lstChar.Add('&');
for i := 0 to lstChar.Count -1 do
begin
sResult := AnsiReplaceStr(sResult ,lstChar[i], GetUniCode(lstChar[i]));
end;
// sResult := HTTPEncode(UTF8Encode(AStr));
// sResult := AnsiReplaceStr(sResult ,'\', '\u005c');
// sResult := AnsiReplaceStr(sResult ,'"', '\u0022');
// sResult := AnsiReplaceStr(sResult ,'''', '\u0027');
result := sResult;
lstChar.Free;
end;
其中GetUniCode是对字符进行转义成unicode,对特殊字符这样处理即可