我使用下面的代碼(嘗試了所有2種方法),將使用Winword製作的UTF8文件讀入Tmemo。該文件包含IPA發音字符。對於這些角色,我只看到正方形。我嘗試了tmemo.font.charset的不同版本,但它沒有幫助。在Delphi 2010中無法看到UTF8字符備註
我該怎麼辦?
彼得
// 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 2014-09-04 15:16:06
on http://ipa.typeit.org/他們推薦以下字體:Segoe UI,Cambria,Calibri,Arial,Times New Roman,Tahoma或Lucida Sans Unicode(不完整) – FileVoyager 2014-09-04 15:18:37
通過「Winword」,我認爲你的意思是「 Word for Windows「(通常被稱爲」Word「),Word不會創建文本文件,除非您使用」另存爲「和更改文件類型專門告訴它,所以很可能您所看到的方塊是非文本字符,你是否像記事本一樣檢查了文件,看它是否可讀? – 2014-09-04 15:26:54