Kodowanie znaków w pliku wynikowym

Odpowiedz Nowy wątek
2017-07-08 17:07

Rejestracja: 17 lat temu

Ostatnio: 1 dzień temu

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?


Pozdrawiam
Buster
edytowany 1x, ostatnio: furious programming, 2017-07-08 18:04

Pozostało 580 znaków

2017-07-08 18:27

Rejestracja: 14 lat temu

Ostatnio: 1 godzina temu

Lokalizacja: Gorlice

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);

Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
edytowany 1x, ostatnio: kAzek, 2017-07-08 18:43

Pozostało 580 znaków

2017-07-09 10:03

Rejestracja: 17 lat temu

Ostatnio: 1 dzień temu

0

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


Pozdrawiam
Buster
I nie pomaga kodowanie UTF-8 z BOM ani bez (jeżeli z było domyślnie)? - kAzek 2017-07-09 12:26

Pozostało 580 znaków

2017-07-09 16:18
Moderator Delphi/Pascal

Rejestracja: 8 lat temu

Ostatnio: 3 godziny temu

Lokalizacja: Tuchów

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.


edytowany 1x, ostatnio: furious programming, 2017-07-09 16:18
też bym tak zrobił, najpierw "ręcznie" sprawdzić czego naprawdę potrzebuje serwis eBay a potem zająć się aplikacją - grzegorz_so 2017-07-09 16:58
Brute force w takich przypadkach nie jest najlepszym rozwiązaniem… :] - furious programming 2017-07-09 16:59

Pozostało 580 znaków

2017-08-03 20:41

Rejestracja: 17 lat temu

Ostatnio: 1 dzień temu

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?


Pozdrawiam
Buster
edytowany 1x, ostatnio: Buster, 2017-08-03 20:48
Sprawdzałeś to co @kAzek napisał kilka postów wcześniej: czy import pliku z BOM i bez BOM przynosi taki sam efekt? Bo nie odpowiedziałeś na to pytanie. - Paweł Dmitruk 2017-08-03 21:37

Pozostało 580 znaków

2017-08-03 21:38

Rejestracja: 17 lat temu

Ostatnio: 1 dzień temu

0

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


Pozdrawiam
Buster

Pozostało 580 znaków

Odpowiedz

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