From a3aae38d2e00ea3d7bf4955be3d67a4d6e606d7a Mon Sep 17 00:00:00 2001 From: Ansgar Becker Date: Tue, 8 Dec 2009 23:51:43 +0000 Subject: [PATCH] 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 --- source/helpers.pas | 27 ++------------------------- source/main.pas | 2 +- source/tabletools.pas | 4 ++-- 3 files changed, 5 insertions(+), 28 deletions(-) diff --git a/source/helpers.pas b/source/helpers.pas index e29868eb..c081c778 100644 --- a/source/helpers.pas +++ b/source/helpers.pas @@ -165,7 +165,6 @@ type function Max(A, B: Integer): Integer; assembler; function Min(A, B: Integer): Integer; assembler; function urlencode(url: String): String; - function openfs(filename: String): TFileStream; procedure StreamWrite(S: TStream; Text: WideString = ''); function fixSQL( sql: WideString; sql_version: Integer = SQL_VERSION_ANSI; cli_workarounds: Boolean = false ): WideString; procedure ToggleCheckListBox(list: TTNTCheckListBox; state: Boolean); Overload; @@ -201,7 +200,6 @@ type function GetDBObjectType(TableStatus: TMySQLQuery): TListNodeType; procedure SetWindowSizeGrip(hWnd: HWND; Enable: boolean); procedure SaveUnicodeFile(Filename: String; Text: WideString); - function CreateUnicodeFileStream(Filename: String): TFileStream; procedure OpenTextFile(const Filename: String; out Stream: TFileStream; out FileCharset: TFileCharset); function GetFileCharset(Stream: TFileStream): TFileCharset; function ReadTextfileChunk(Stream: TFileStream; FileCharset: TFileCharset; ChunkSize: Int64 = 0): WideString; @@ -1268,16 +1266,6 @@ begin 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 } @@ -2364,23 +2352,12 @@ procedure SaveUnicodeFile(Filename: String; Text: WideString); var f: TFileStream; begin - f := CreateUnicodeFileStream(Filename); - f.WriteBuffer(Pointer(Text)^, Length(Text) * 2); + f := TFileStream.Create(Filename, fmCreate or fmOpenWrite); + StreamWrite(f, Text); f.Free; 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 } diff --git a/source/main.pas b/source/main.pas index 994cbf28..a331f583 100644 --- a/source/main.pas +++ b/source/main.pas @@ -2083,7 +2083,7 @@ begin if Dialog.Execute and (Dialog.FileName <> '') then try Screen.Cursor := crHourGlass; - FS := openfs(Dialog.FileName); + FS := TFileStream.Create(Dialog.FileName, fmCreate or fmOpenWrite); case Dialog.FilterIndex of 1: GridToCsv(ActiveGrid, prefCSVSeparator, prefCSVEncloser, prefCSVTerminator, FS); 2: GridToHtml(ActiveGrid, Title, FS); diff --git a/source/tabletools.pas b/source/tabletools.pas index f43f9b95..5285e793 100644 --- a/source/tabletools.pas +++ b/source/tabletools.pas @@ -893,10 +893,10 @@ begin FreeAndNil(ExportStream); if not DirectoryExists(comboExportOutputTarget.Text) then ForceDirectories(comboExportOutputTarget.Text); - ExportStream := openfs(comboExportOutputTarget.Text+'\'+GoodFileName(obj)+'.sql'); + ExportStream := TFileStream.Create(comboExportOutputTarget.Text+'\'+GoodFileName(obj)+'.sql', fmCreate or fmOpenWrite); end; if ToFile and (not Assigned(ExportStream)) then - ExportStream := openfs(comboExportOutputTarget.Text); + ExportStream := TFileStream.Create(comboExportOutputTarget.Text, fmCreate or fmOpenWrite); if ToDb or ToServer then ExportStream := TMemoryStream.Create; if (db<>ExportLastDatabase) or ToDir then begin