UCS2编码?(50分)

  • 主题发起人 主题发起人 laijf
  • 开始时间 开始时间
L

laijf

Unregistered / Unconfirmed
GUEST, unregistred user!
请教高手,在DELPHI中UCS2编码的中文字或数字如果转换成我能看懂,又如果转换把一般中文字或
数字转换成UCS2编码??请讲详细点,小弟是菜鸟。最好有个例子
 
UCS2编码规则是什么?
 
呵呵,小弟就是不知道呀才问呀!其实这是从通过WINSOCK收到的信息,是联通手机网关发给我的信息
 
原来UCS2就是16bit的unicode啊
那还要转什么呀, 用个widestring直接接受不行吗?
 
但是我能识别是什么内容吗?
比如一个汉字或数字。
能给我个例子吗?
小弟一直不明白这到底有什么区别
 
抱歉上面说错了一点点,还是需要进行转换的,所作的转换其实是ansistring和widestring的转换
假设: AnsiS是你接收到的内容, WideS是最终结果
var
AnsiS: string;
WideS: widestring;
begin
setlength(WideS, length(AnsiS) div 2);
move(AnsiS[1], WideS[1], length(AnsiS));
// 不能用WideS := AnsiS进行转换, 因为AnsiS中2个字符才等于WideS中一个字符,
// 直接用:=赋值的话,编译器会将AnsiS中每个字符都转成两个字符存进WideS中。
// 所以只能用move来欺骗编译器了
....;
end;
至于怎么识别汉字和西文字符这不是问题。 因为widestring中汉字和西文字符一样, 都占
2个字节。 比如:
WideS[1]='汉'
WideS[2]='1'
 
恩我要的就是这个,谢谢了,因该是对的看起
我现在还没时间试,不过先把分给你
能把你的QQ留下吗?
到时候我可能还要请教你
 
哦对了那反转回来怎么办了?
 
一样用move呀
setlength(AnsiS, length(WideS) * 2);
move(WideS[1], AnsiS[1], length(WideS)*2);
 
后退
顶部