schonmal vorab: ich bin kein gelernter Programmierer und programmiere auch nur ab und zu mal etwas

Leider bin ich im Moment etwas am verzweifeln, habe schon etliche Foreneinträge durchforstet und Lösungsversuche hinter mir, das Problem bekomme ich jedoch nicht in den Griff. Ich programmiere
derzeit in Lazarus 1.6 (x86) unter Windows 10 ein kleines Tool, das mir mehrere Strings aus einer SQLite-DB ausliest, die dann in eine CSV abgespeichert werden. Ein externes Etikettentool wird dann per Shellexecute aufgerufen, das dann auf
die CSV Datei zugreift und im Anschluss ein Etikett mit Barcode druckt. Soweit so gut.
Problem dabei ist, das die CSV beim abspeichern (laut Notepad++) als UTF-8 abgespeichert wird und das Etikettentool die vorhandenen Umlaute dann eben versemmelt (z.B. ein "ü" wird zu "ü" usw.).
Sehe ich mir die CSV im Editor an, ist das "ü" auch noch vorhanden, in Excel schon nichtmehr..

Hier der Quellcode:
Code: Alles auswählen
procedure TForm_Hauptformular.BitBtn_DruckenClick(Sender: TObject);
var sl : TStringList;
i : Integer;
s : String;
begin
sl := TStringList.Create;
sl.Clear;
s :='';
try
SQLQuery1.Close;
SQLQuery1.SQL.Text:=Concat('SELECT * FROM tblEtiketten WHERE art_nummer ='+ComboBox_Artikelnummer.Text);
SQLQuery1.Open;
while not SQLQuery1.EOF do begin
s:=SQLQuery1.Fields[0].AsString+','+SQLQuery1.Fields[1].AsString+','+SQLQuery1.Fields[2].AsString+','+SQLQuery1.Fields[3].AsString+','+SQLQuery1.Fields[4].AsString+','+SQLQuery1.Fields[5].AsString+','+SQLQuery1.Fields[6].AsString+','+SQLQuery1.Fields[7].AsString;
SQLQuery1.Next;
end;
sl.Add('art_nummer,art_text_1,art_text_2,art_text_3,kunde,menge,gebinde,satz');
for i:= 0 to StrToInt(SpinEdit_Anzahl.Text) -1 do begin
sl.Add(s);
end;
sl.SaveToFile(CSV_Pfad);
finally
sl.Free;
end;
s := ComboBox_Artikelnummer.Text;
ShellExecute(0,'open','tfprint.exe',concat('-F ',EtikettenVorlage,' -O "',Druckername,'"'),nil,SW_HIDE);
end;