Rep*_*til 5 delphi delphi-10-seattle
我工作TStringList
有TMemeorySteam
很多在我的项目.
msTmp := TMemoryStream.Create;
try
lTemp.SaveToStream(msTmp, TEncoding.Unicode);
finally
msTmp.Free;
end;
.....
lTemp := TStringList.Create;
try
lTemp.LoadFromFile(msTmp, TEncoding.Unicode);
finally
lTemp.Free;
end;
Run Code Online (Sandbox Code Playgroud)
我如何能够 在我的项目中告知LoadFromStream()
并且SaveToStream()
默认情况下流是UTF-16编码的,而不包括每次调用中的编码类型.所以我只能打电话LoadFromStream(msTmp)
,它将加载UTF-16编码.
当前对象的默认编码.
在调用
LoadFromStream
或指定nil编码时使用DefaultEncodingSaveToStream
.默认情况下,DefaultEncoding设置为
Default
.用户可以改变DefaultEncoding如果另一个缺省编码期望LoadFromStream
或SaveToStream
.
但请注意TStrings.Encoding
酒店:
在从流或文件读取期间确定的字符编码.
Encoding
是一个只读属性,包含调用LoadFromStream
或LoadFromFile
方法时检测到的字符编码的值.如果文件或流不包含BOM(无法检测到编码值),则将Encoding
其设置为DefaultEncoding
属性中指定的值.
Encoding
用于SaveToStream
和SaveToFile
方法.
如果未给出
Encoding
参数[ofLoadFromStream
],则使用适当的编码加载字符串.通过调用类的GetBufferEncoding
例程来获得编码的值TEncoding
.LoadFromStream
然后将Encoding
属性中的编码值保存,以便在保存流时使用.
因此,只要您不调用LoadFrom...()
,就可以设置DefaultEncoding
为TEncoding.Unicode
然后调用SaveTo...()
而不指定Encoding
参数的值.
但是,一旦你打电话LoadFrom...()
,该Encoding
属性优先于该DefaultEncoding
属性进行后续调用SaveTo...()
.只要文件没有BOM,该Encoding
属性将匹配该DefaultEncoding
属性.但如果遇到非UTF16LE BOM,则所有投注均已关闭.
为了确保TEncoding.Unicode
始终使用,你应该继续使用Encoding
的参数LoadFrom...()
和SaveTo...()
,这就是为什么它们的存在.它们优先考虑,(Default)Encoding
当没有明确说明输入/输出编码时,属性是后备.
归档时间: |
|
查看次数: |
6046 次 |
最近记录: |