Skip to content

Commit df6abc9

Browse files
committed
Prefer UTF-8 encoding for loading files, instead of auto-detection, which breaks in many cases. See https://www.heidisql.com/forum.php?t=44351
1 parent 5ec8c4c commit df6abc9

File tree

3 files changed

+9
-29
lines changed

3 files changed

+9
-29
lines changed

source/loaddata.pas

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -681,16 +681,7 @@ procedure Tloaddataform.btnOpenFileClick(Sender: TObject);
681681
Dialog.EncodingIndex := AppSettings.ReadInt(asFileDialogEncoding, Self.Name);
682682
if Dialog.Execute then begin
683683
editfilename.Text := Dialog.FileName;
684-
FFileEncoding := Mainform.GetEncodingByName(Dialog.Encodings[Dialog.EncodingIndex]);
685-
if FFileEncoding = nil then begin
686-
MessageDialog(_('Auto detecting the encoding of a file is highly discouraged. You may experience data loss if the detection fails.') +
687-
SLineBreak + SLineBreak +
688-
_('To avoid this message select the correct encoding before pressing Open.'),
689-
mtWarning, [mbOK]);
690-
TestStream := TFileStream.Create(Dialog.Filename, fmOpenRead or fmShareDenyNone);
691-
FFileEncoding := DetectEncoding(TestStream);
692-
TestStream.Free;
693-
end;
684+
FFileEncoding := TEncoding.UTF8;
694685
grpParseMethod.OnClick(Sender);
695686
AppSettings.WriteInt(asFileDialogEncoding, Dialog.EncodingIndex, Self.Name);
696687
end;

source/main.pas

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3948,24 +3948,13 @@ procedure TMainForm.actLoadSQLExecute(Sender: TObject);
39483948
Dialog.Encodings.Assign(FileEncodings);
39493949
Dialog.EncodingIndex := AppSettings.ReadInt(asFileDialogEncoding, Self.Name);
39503950
if Dialog.Execute then begin
3951-
Encoding := GetEncodingByName(Dialog.Encodings[Dialog.EncodingIndex]);
3952-
if Encoding = nil then begin
3953-
ProceedResult := MessageDialog(_('Really auto-detect file encoding?') + SLineBreak + SLineBreak +
3954-
_('Auto detecting the encoding of a file is highly discouraged. You may experience data loss if the detection fails.') + SLineBreak + SLineBreak +
3955-
_('To avoid this message select the correct encoding before pressing Open.'),
3956-
mtConfirmation, [mbYes, mbCancel]);
3957-
end else begin
3958-
ProceedResult := mrYes;
3959-
end;
3960-
3961-
if ProceedResult = mrYes then begin
3962-
if not RunQueryFiles(Dialog.Files, Encoding, Sender=actRunSQL) then begin
3963-
for i:=0 to Dialog.Files.Count-1 do begin
3964-
Tab := GetOrCreateEmptyQueryTab(False);
3965-
Tab.LoadContents(Dialog.Files[i], True, Encoding);
3966-
if i = Dialog.Files.Count-1 then
3967-
SetMainTab(Tab.TabSheet);
3968-
end;
3951+
Encoding := TEncoding.UTF8;
3952+
if not RunQueryFiles(Dialog.Files, Encoding, Sender=actRunSQL) then begin
3953+
for i:=0 to Dialog.Files.Count-1 do begin
3954+
Tab := GetOrCreateEmptyQueryTab(False);
3955+
Tab.LoadContents(Dialog.Files[i], True, Encoding);
3956+
if i = Dialog.Files.Count-1 then
3957+
SetMainTab(Tab.TabSheet);
39693958
end;
39703959
end;
39713960
AppSettings.WriteInt(asFileDialogEncoding, Dialog.EncodingIndex, Self.Name);

source/texteditor.pas

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -418,7 +418,7 @@ procedure TfrmTextEditor.btnLoadTextClick(Sender: TObject);
418418
d.EncodingIndex := AppSettings.ReadInt(asFileDialogEncoding, Self.Name);
419419
if d.Execute then try
420420
Screen.Cursor := crHourglass;
421-
MemoText.Text := ReadTextFile(d.FileName, MainForm.GetEncodingByName(d.Encodings[d.EncodingIndex]));
421+
MemoText.Text := ReadTextFile(d.FileName, TEncoding.UTF8);
422422
if (FMaxLength > 0) and (Length(MemoText.Text) > FMaxLength) then
423423
MemoText.Text := copy(MemoText.Text, 0, FMaxLength);
424424
AppSettings.WriteInt(asFileDialogEncoding, d.EncodingIndex, Self.Name);

0 commit comments

Comments
 (0)