继续我之前的问题:How to save UTF-16 (Little Endian) and String value inside a file in Delphi 7?
当我从this answer使用以下代码时:
uses
Classes;
const
BOM: WideChar = $FEFF;
var
W: WideString;
FS: TFileStream;
begin
W := 'ᗿABC';
FS := TFileStream.Create('text.txt', fmCreate);
try
FS.WriteBuffer(BOM, Sizeof(BOM));
FS.WriteBuffer(PWideChar(W)^, Length(W) * Sizeof(WideChar));
finally
FS.Free;
end;
end;
我有这些问题:
1.当我使用这个:W := 'ᗿABC';
我的IDE显示W := '?ABC';
我可以解决这个问题吗?因为[?]不是我的目标
1.当运行代码时,我在图像中得到错误:
2条答案
按热度按时间xpszyzbs1#
在任何情况下,请尝试以下操作:
或者,你可能不得不采取类似这样的措施:
1.尝试将整数值类型转换为
WideChar
:否则,使用
Word
代替WideChar
:chhqkbe12#
使用 Delphi 7 kind of 在
WideString
s中与Unicode兼容,但不一致:有几个字符甚至不能用这种方式赋值(既不能通过文本字面量赋值,也不能通过序数字面量赋值),因此您可以使用不同的方法来测试这些字符:
拇指规则是:
Word
s并在使用文本文字时将其转换为WideChar
Word
而不是WideChar
作为一个初学者,应该避免使用 Delphi 7 for Unicode--当你对Unicode、UTF-16和Pascal有信心的时候,就应该这样做。我从Windows 2000在 Delphi 5上开始,后来继续使用Delphi 7,在不同的场合(正则表达式等)有类似的经验。
作为一个过时的 Delphi 版本的替代品,你可以尝试免费的Lazarus IDE for FPC--它使用UTF-8作为Unicode的一种方法,并且应该在代码中更好地处理/支持文本文字。IDE甚至看起来像健壮的 Delphi 7。