TStringList.LoadFromFile时会出现 No mapping for the Unicode character exists in the target multi-byte code page提示
如下代码
- var tmpStrs : TStrings;
- begin
- tmpStrs := TStringList.Create;
- tmpStrs.LoadFromFile(filename, TEncoding.UTF8); //这里有可能会出现No mapping for the Unicode character exists in the target multi-byte code page
- tmpStrs.Free;
- end;
var tmpStrs : TStrings;
begin
tmpStrs := TStringList.Create;
tmpStrs.LoadFromFile(filename, TEncoding.UTF8); //这里有可能会出现No mapping for the Unicode character exists in the target multi-byte code page
tmpStrs.Free;
end;
原因是读取的文件如果不是UTF8格式的,会出现错误提示,改进方法如下
- var tmpStrs : TStrings;
- begin
- tmpStrs := TStringList.Create;
- try
- tmpStrs.LoadFromFile(htmlfile_s, TEncoding.UTF8); //先用utf-8尝试
- except
- tmpStrs.LoadFromFile(htmlfile_s); //再用默认编码尝试
- end;
- tmpStrs.Free;
- end;