Я прочитал UTF8-файл, сделанный с помощью Winword, в Tmemo, используя приведенный ниже код (пробовал все 2 метода). Файл содержит символы произношения IPA. Для этих персонажей я вижу только квадраты. Я пробовал разные версии tmemo.font.charset, но это не помогло.Невозможно увидеть символы UTF8 в Delphi 2010 Memo
Что я могу сделать?
Питер
// 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;
Вы уверены, что шрифт, который вы используете, содержит эти символы? – FileVoyager
на http://ipa.typeit.org/ они рекомендуют следующие шрифты: Segoe UI, Cambria, Calibri, Arial, Times New Roman, Tahoma или Lucida Sans Unicode (неполное) – FileVoyager
Под «Winword», я полагаю, вы имеете в виду " Word для Windows "(чаще всего называемое« Word ». Word не создает текстовые файлы, если вы специально не говорите ему об этом, используя« Сохранить как »и изменяя тип файла, поэтому весьма вероятно, что квадраты, которые вы видите это нетекстовые символы. Вы проверили файл в чем-то вроде «Блокнота», чтобы узнать, читается ли там? –