我在TMemoryStream
打开了一个文件。它的当前编码可以是带有BOM的ANSI或UTF8。我必须将TMemoryStream
的编码转换为UTF8
。我该怎么做?
答案 0 :(得分:2)
如果您能够将TMemoryStream
更改为其后代TBytesStream
,则可以使用Convert
中的TEncoding
功能。
var
stream: TBytesStream;
bytes: TBytesStream;
...
TEncoding.GetBufferEncoding(stream.Bytes, curEncoding);
if curEncoding <> TEncoding.UTF8 then begin
bytes := TEncoding.Convert(curEncoding, TEncoding.UTF8, stream.Bytes);
stream.Free;
stream := TBytesStream.Create(bytes);
end;
不确定它是否是最有效的方式,但至少它是一种方式,它只需要几行,这反过来也是某种效率。