Delphi XE5 Base64解码Big5字符串遇到部分乱码!
测试字符串:p9o/p9quYQ==
正确解析的结果:我爱我家
试验结果:我?我家 (爱字丢失)
测试代码:
//uses Soap.EncdDecd
function DecodeBase64Str2: string;
var
InStr, OutStr: TStringStream;
begin
InStr := TStringStream.Create('p9o/p9quYQ==');
InStr.SaveToFile('c:\1.txt');//输出的结果 :p9o/p9quYQ== 正确
try
OutStr := TStringStream.Create('');
try
DecodeStream(InStr, OutStr);
OutStr.SaveToFile('c:\2.txt');
//输出的结果:и?и產 ,正确的应是и稲и產
//用第三方面软件将此按Big5编码字符查看为 我?我家
//此时已发生丢失“爱” 字
Result := TEncoding.GetEncoding(950).GetString(OutStr.Bytes); //将Big5编码转成gb2312
//Result:= '我?我家'
finally
OutStr.Free;
end;
finally
InStr.Free;
end;
end;