Do not add UTF-8 BOM headers to written files, they are not needed in most cases, and break other tools from reading them, e.g. mysqldump. See http://www.heidisql.com/forum.php?t=4622

This commit is contained in:
Ansgar Becker
2009-12-08 23:51:43 +00:00
parent 1c69941f11
commit a3aae38d2e
3 changed files with 5 additions and 28 deletions

View File

@ -165,7 +165,6 @@ type
function Max(A, B: Integer): Integer; assembler; function Max(A, B: Integer): Integer; assembler;
function Min(A, B: Integer): Integer; assembler; function Min(A, B: Integer): Integer; assembler;
function urlencode(url: String): String; function urlencode(url: String): String;
function openfs(filename: String): TFileStream;
procedure StreamWrite(S: TStream; Text: WideString = ''); procedure StreamWrite(S: TStream; Text: WideString = '');
function fixSQL( sql: WideString; sql_version: Integer = SQL_VERSION_ANSI; cli_workarounds: Boolean = false ): WideString; function fixSQL( sql: WideString; sql_version: Integer = SQL_VERSION_ANSI; cli_workarounds: Boolean = false ): WideString;
procedure ToggleCheckListBox(list: TTNTCheckListBox; state: Boolean); Overload; procedure ToggleCheckListBox(list: TTNTCheckListBox; state: Boolean); Overload;
@ -201,7 +200,6 @@ type
function GetDBObjectType(TableStatus: TMySQLQuery): TListNodeType; function GetDBObjectType(TableStatus: TMySQLQuery): TListNodeType;
procedure SetWindowSizeGrip(hWnd: HWND; Enable: boolean); procedure SetWindowSizeGrip(hWnd: HWND; Enable: boolean);
procedure SaveUnicodeFile(Filename: String; Text: WideString); procedure SaveUnicodeFile(Filename: String; Text: WideString);
function CreateUnicodeFileStream(Filename: String): TFileStream;
procedure OpenTextFile(const Filename: String; out Stream: TFileStream; out FileCharset: TFileCharset); procedure OpenTextFile(const Filename: String; out Stream: TFileStream; out FileCharset: TFileCharset);
function GetFileCharset(Stream: TFileStream): TFileCharset; function GetFileCharset(Stream: TFileStream): TFileCharset;
function ReadTextfileChunk(Stream: TFileStream; FileCharset: TFileCharset; ChunkSize: Int64 = 0): WideString; function ReadTextfileChunk(Stream: TFileStream; FileCharset: TFileCharset; ChunkSize: Int64 = 0): WideString;
@ -1268,16 +1266,6 @@ begin
end; end;
{***
Create UTF-8 text file
}
function openfs(filename: String): TFileStream;
begin
Result := TFileStream.Create(filename, fmCreate);
Result.WriteBuffer(sUTF8BOMString, 3);
end;
{** {**
Write some UTF8 text to a file- or memorystream Write some UTF8 text to a file- or memorystream
} }
@ -2364,23 +2352,12 @@ procedure SaveUnicodeFile(Filename: String; Text: WideString);
var var
f: TFileStream; f: TFileStream;
begin begin
f := CreateUnicodeFileStream(Filename); f := TFileStream.Create(Filename, fmCreate or fmOpenWrite);
f.WriteBuffer(Pointer(Text)^, Length(Text) * 2); StreamWrite(f, Text);
f.Free; f.Free;
end; end;
function CreateUnicodeFileStream(Filename: String): TFileStream;
var
header: array[0..1] of Byte;
begin
header[0] := $FF;
header[1] := $FE;
Result := TFileStream.Create(Filename, fmCreate or fmOpenWrite);
Result.WriteBuffer(header, 2);
end;
{** {**
Open a textfile unicode safe and return a stream + its charset Open a textfile unicode safe and return a stream + its charset
} }

View File

@ -2083,7 +2083,7 @@ begin
if Dialog.Execute and (Dialog.FileName <> '') then try if Dialog.Execute and (Dialog.FileName <> '') then try
Screen.Cursor := crHourGlass; Screen.Cursor := crHourGlass;
FS := openfs(Dialog.FileName); FS := TFileStream.Create(Dialog.FileName, fmCreate or fmOpenWrite);
case Dialog.FilterIndex of case Dialog.FilterIndex of
1: GridToCsv(ActiveGrid, prefCSVSeparator, prefCSVEncloser, prefCSVTerminator, FS); 1: GridToCsv(ActiveGrid, prefCSVSeparator, prefCSVEncloser, prefCSVTerminator, FS);
2: GridToHtml(ActiveGrid, Title, FS); 2: GridToHtml(ActiveGrid, Title, FS);

View File

@ -893,10 +893,10 @@ begin
FreeAndNil(ExportStream); FreeAndNil(ExportStream);
if not DirectoryExists(comboExportOutputTarget.Text) then if not DirectoryExists(comboExportOutputTarget.Text) then
ForceDirectories(comboExportOutputTarget.Text); ForceDirectories(comboExportOutputTarget.Text);
ExportStream := openfs(comboExportOutputTarget.Text+'\'+GoodFileName(obj)+'.sql'); ExportStream := TFileStream.Create(comboExportOutputTarget.Text+'\'+GoodFileName(obj)+'.sql', fmCreate or fmOpenWrite);
end; end;
if ToFile and (not Assigned(ExportStream)) then if ToFile and (not Assigned(ExportStream)) then
ExportStream := openfs(comboExportOutputTarget.Text); ExportStream := TFileStream.Create(comboExportOutputTarget.Text, fmCreate or fmOpenWrite);
if ToDb or ToServer then if ToDb or ToServer then
ExportStream := TMemoryStream.Create; ExportStream := TMemoryStream.Create;
if (db<>ExportLastDatabase) or ToDir then begin if (db<>ExportLastDatabase) or ToDir then begin