我想将编辑框中的值和 UTF-16(Little Endian)值保存在文件中。
我将举一个简单的例子来更好地理解我的问题:
Edit Box Value => 'Good';
Hex value = FFFEFF15410042004300
which is equivalent to UTF-16 (Little Endian) => ᗿABC
现在我想要的值Good
and ᗿ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 对 UTF-16 字符串提供了更多支持,通过UnicodeString
, TEncoding.(BigEndian)Unicode
等。例如:
uses
System.IOUtils;
begin
TFile.WriteAllText('text.txt', 'ᗿABC', TEncoding.Unicode);
end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)