|
原帖由 lxl1638 于 2008-10-21 22:46 发表
的确,Delphi在处理Unicode字符有很多不足:
用API可能处理Unicode字符,但大多数使用Delphi的人很不习惯,
如果从 Unicode ==> Ansi ==>Unicode 来回转换,效率会降低,WimTool 就用这个办法(WimgAPI.DLL的出 ...
谢谢,我用的是自已试出来的转换方法,全部转为Ansi来处理,感觉速度还可以。
Function LoadUnicodeFile(FileName:string):String;
var
pBuffer: PByte;
pwChr: PWideChar;
strmScript: TFileStream;
begin
Result:='';
strmScript := TFileStream.Create(FileName, fmOpenRead);
GetMem(pBuffer, strmScript.Size);
try
strmScript.Read(pBuffer^, strmScript.Size);
if PWord(pBuffer)^<>$FEFF then //Unicode文件开头是FF FE
begin
setLength(Result,strmScript.size);
CopyMemory(@Result[1],pBuffer,strmScript.size);
end else
begin
pwChr:= PWideChar(pBuffer);
Inc(pwChr,1); //增加这一句,去文件头和文件尾出现几个'?'
Result := WideCharToString(pwChr);
end;
finally
FreeMem(pBuffer);
strmScript.Free;
end;
end; |
|