delphi xe7 字符串編碼問題
delphi吧
全部回复
仅看楼主
level 7
MarsTed
楼主
在d7中用idtcpclient发送字符串给xe7的idtcpserver,xe7收到的汉字字符串是乱码
不管d7用ansi 和utf8编码, 还是 xe7用ansi 、 utf8 、 unicode显示的都是乱码
求大神指点一下
2016年05月10日 09点05分
1
吧务
level 14
BambooCaep
先对比一下发送和接收数据的二进制内容。
2016年05月10日 22点05分
2
MarsTed
二进制内容不一样了,接收的时候好像自动调用了utf8decode。如果带有汉字的字符串被utf8decode()编码后怎么才能还原呢,自带函数都还原不了
2016年05月11日 05点05分
BambooCaep
@MarsTed
用ReadBytes方法接收数据看看f
2016年05月11日 05点05分
MarsTed
@BambooCaep
问题解决了,谢谢吧主 我用ReadBytes方法接收数据,然后转换成AnsiString类型,就正确了;utf8编码和反编也可以了。
2016年05月11日 07点05分
MarsTed
@BambooCaep
根本原因是:7中string类型的默认类型是AnsiString,而xe7中string 类型的默认类型是WideString
2016年05月11日 07点05分
level 12
ayi033
其实很简单,你在XE7接收的地方定义一个
Code:IIdTextEncoding;
Rev:String;
begin
Code:=IndyTextEncoding(encASCII);
Rev := IOHandler.ReadLn(Code);
end;
读出来就正确了
2016年06月30日 07点06分
9
level 7
MarsTed
楼主
所噶,
我用的方法是readchar,一个一个往anscstring中加
2016年06月30日 10点06分
10
level 8
yc515623876
READCHAR 应该是一次只读8位所以不行
2016年08月03日 08点08分
15
1