我想将编辑框中的值和 UTF-16(Little Endian)值保存在文件中。
我将举一个简单的例子来更好地理解我的问题:
Edit Box Value => 'Good';
Hex value = FFFEFF15410042004300
which is equivalent to UTF-16 (Little Endian) => ᗿABC
现在我希望将
Good
和ᗿABC
的值保存在一个文件中,这样如果我们用记事本打开保存的文件,它将显示值:ᗿABCGood
,如果我们用十六进制编辑器打开它,它会显示值:FFFEFF1541004200430047006F006F006400
。
您的十六进制只是字符串的 UTF-16(Little Endian)编码形式的原始字节。
2009 年之前的 Delphi 版本(如 Delphi 7)对 Unicode 的支持非常有限,但您可以简单地将字符串分配给
WideString
(Delphi 的 UTF-16LE COM 字符串包装器),然后将其字符的原始字节写入文件,前面带有 UTF-16LE BOM,例如:
uses
Classes;
const
BOM: WideChar = 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;
自 2009 年以来,Delphi 通过
UnicodeString
、TEncoding.(BigEndian)Unicode
等对 UTF-16 字符串提供了更多支持。例如:
uses
System.IOUtils;
begin
TFile.WriteAllText('text.txt', 'ᗿABC', TEncoding.Unicode);
end;