Socket通信时,取中文时乱码,这主要是编码问题AnisString是双字节编码,而Unicode是3字节编码
解决办法
const buf:array[0..8] of byte =(228, 189, 160, 229, 165, 189, 239, 188, 129); //buf:TByteArray; 这两个效果一样
var
s: string;
i:Integer;
stream: TStringStream;
begin
//buf := {228, 189, 160, 229, 165, 189, 239, 188, 129}; //中文 “你好!”
stream := TStringStream.Create('', TEncoding.UTF8); //TEncoding.UTF8 解决汉字乱码问题
stream.Size := 9;
for i := 0 to 9 do stream.Bytes[i] := buf[i];
s := stream.DataString;
FreeAndNil(stream);
showmessage(s);
end;