在D2007中将Unicode流转换为字符串列表

时间:2010-12-16 07:22:00

标签: delphi unicode delphi-2010 delphi-2007

在D2010应用程序中我做了

StringList.SaveToStream (MemStream, TEncoding.Unicode);

然后我通过网络将此流发送到某些客户端应用程序。这部分代码是固定的(我不能改变它):

现在我有一个D2007应用程序需要接收此流并将其转换回字符串列表。 D2007不包括Unicode支持和TEncoding类。如何将流转换为字符串列表?类似于

的东西
StringList.LoadFromStream (MemStream, TEncoding.Unicode)

在D2010 ......

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

在Delphi 2007中,您几乎没有选择:

  1. 使用TWIDEStrings。
  2. 将流内容读入WideString变量并将其值分配给TStrings.Text属性。

答案 1 :(得分:2)

编辑:由于您无法更改Delphi 2010代码,我将使用Delphi 2007中TWideStrings单元的WideStrings类:该类支持unicode字符串。

请注意,在Delphi 2010中进行编码时,您会在流的开头找到BOM(byte order mark)。

我会将Delphi 2010中的流保存为UTF8(TEncoding.UTF8),然后在Delphi 2007中使用function UTF8Decode(const S: UTF8String): WideString;单元中的Systemdocs

- 的Jeroen