Kodowanie znaków w pliku wynikowym

0

Witajcie.
Mam pewien problem. Jest sobie procedura:

procedure TForm1.Button5Click(Sender: TObject);
var i, j: integer;
    line: string;
    csv: TStringList;
begin
  csv := TStringList.Create;
  for i := 0 to StringGrid1.RowCount - 1 do
    begin
      line := '';
      for j := 0 to StringGrid1.ColCount - 1 do
        begin
          if (j = 36) or (j = 37) then Continue;
          line := line + StringGrid1.Cells[j, i];
          if j <> StringGrid1.ColCount - 1 then line := line + ';';
        end;
        csv.add(line);
    end;
    csv.SaveToFile(SaveFileDialog.FileName, TEncoding.UTF8);
    ShowMessage('Plik został zapisany');
end;

Plik się poprawnie zapisuje. Otwieram plik w dowolnym edytorze (Notatnik, PSPad) i wszelkie dziwne znaczki (niemieckie, cyrilica) się wyświetlają poprawnie.
Następnie ten plik importowany jest do eBaya. I wtedy dzieją się cuda. Zamiast poprawnych znaków wyświetlają się krzaki.
Czy ktoś by podpowiedział co jest nie tak?

2

A z jakim kodowaniem wychodzi plik wynikowy UTF-8? Jaka to wersja Delphi?

  csv.WriteBOM:= False; // lub True spróbuj poeksperymentować nie wiem jak jest domyślnie
  csv.SaveToFile(SaveFileDialog.FileName, TEncoding.UTF8);
0

Kodowanie jest UTF-8. Sprawdzałem. A wersja Delphi to 10.1 Berlin.

1

@Buster: nie zgaduj, najpierw wypada sprawdzić czego konkretnie oczekuje eBay.

Na Twoim miejscu zrobiłbym na odwrót – najpierw sprawdziłbym co eBay oczekuje (kodowanie i ew. dodatkowe ważne informacje), następnie przygotowałbym w jakimś edytorze (np. Notepad++) przykładowy plik i sprawdził, czy będzie pasował, a jak już wszystko po stronie wymienionego serwisu będzie grało to wtedy testowałbym różne rozwiązania po stronie Delphi – dotąd, aż program wygeneruje taki sam plik, jaki był poprawnie interpretowany przez eBay.

Spróbuj w ten sposób.

0

Muszę wrócić do tematu. Niestety nic z tego. Program generuje plik zakodowany UTF-8. Sprawdzam w PSPad. Ebay tak na prawdę nie ma żadnych wymagań w tej kwestii. W programie wszystko wyświetla się w porządku. Plik w PSPad otwiera się poprawnie. Pokazuje, że jest kodowanie UTF-8. A po załadowaniu do serwisu, zamiast np znaku ü wyświetla się: ü. I kompletnie nie mam pomysłu o co chodzi. Nie mam żadnego punktu zaczepienia.
Czy problemem może być ZConnection i ZQuery, które pobierają dane z innego pliku csv, również zakodowanego UTF-8?

0

Tak. Sprawdziłem. Czy z BOM, czy bez BOM jest tak samo.

1 użytkowników online, w tym zalogowanych: 0, gości: 1