gpt4 book ai didi

delphi - 在 Delphi 2010 备忘录中看不到 UTF8 字符

转载 作者:行者123 更新时间:2023-12-02 17:40:00 26 4
gpt4 key购买 nike

我使用下面的代码将用 Winword 制作的 UTF8 文件读取到 Tmemo 中(尝试了所有 2 种方法)。该文件包含 IPA 发音字符。对于这些字符,我只看到正方形。我尝试了不同版本的 tmemo.font.charset,但没有帮助。

我能做什么?

彼得

// OD is an TOpenDialog

procedure TForm1.Load1Click(Sender: TObject);

{
var fileH: textFile;
newLine: RawByteString;

begin
if od.execute (self.Handle) then begin
assignFile(fileH,od.filename);
reset(fileH);
while not eof(fileH) do begin
readln(fileH,newLine);
Memo1.lines.Add(UTF8toString(newLine));
end;
closeFile(fileH);
end;
end;
}


var
FileStream: tFileStream;
Preamble: TBytes;
memStream: TMemoryStream;
begin
if od.Execute then
begin
FileStream := TFileStream.Create(od.FileName,fmOpenRead or fmShareDenyWrite);
MemStream := TMemoryStream.Create;

Preamble := TEncoding.UTF8.GetPreamble;
memStream.Write(Preamble[0],length(Preamble));
memStream.CopyFrom(FileStream,FileStream.Size);
memStream.Seek(0,soFromBeginning);

memo1.Lines.LoadFromStream(memStream);

showmessage(SysErrorMessage(GetLastError));

FileStream.Free;
memStream.Free;
end;
end;

最佳答案

首先,你做的工作太多了。您的代码可以简化为:

procedure TForm1.Load1Click(Sender: TObject);
begin
if od.Execute then
memo1.Lines.LoadFromFile(od.FileName, TEncoding.UTF8);
end;

其次,正如 David 所说,您需要使用支持存储在文件中的 Unicode 字符/字形的字体。仅设置 Font.Charset 是不够的,您必须将 Font.Name 设置为兼容字体。看看 loursonwinny 提到的字体。

关于delphi - 在 Delphi 2010 备忘录中看不到 UTF8 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25669056/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com