PrestaSHOP: import plików CSV i polskie znaki

Dzisiaj otrzymaliśmy od klienta pliki CSV z baza produktów, które trzeba by zaimportować do jego sklepu internetowego postawionego na PrestaSHOP. Pliki na pierwszy rzut oka były jak najbardziej prawidłowe jednak podczas importowania ich zawartości do sklepu niestety wszystko się wykrzaczało. Problemem jak się okazało, były polskie znaki w nazwach produktów, a tak na prawdę jak okazało się na samym końcu problemem było kodowanie danego pliku. Zaczęliśmy szukać rozwiązania. Pliki przysłane przez klienta, były zakodowanie w ISO-8859-2, zaś PrestaSHOP przyjmuje tylko pliki zakodowane w ISO-8859-1 lub UTF-8. Zaczęliśmy więc kombinować. Najpierw otworzyliśmy plik w n++ i zmieniliśmy mu kodowanie na UTF-8. Logicznym jednak było to, że polskie znaki zamieniły nam się na dziwne krzaczki. Nic to! Chcieliśmy sprawdzić, czy w ogóle sposób zmiany kodowania w n++ coś pomoże i plik w jakikolwiek sposób zostanie zaimportowany przez Preste, nawet z dziwnymi krzaczkami. Nie udało się. Nadal pojawiały się błędy. Z pomocą jak zwykle przyszło GOOGLE. Zapytaliśmy google, czy oby ktoś wcześniej nie miał takiego problemu (logicznym się wydawało że mieć musiał). No i tak jak się spodziewaliśmy, w kilku postów skleciliśmy jedno rozwiązanie, które ?rozwiązuje problem?, bądź co najmniej pomaga w jego obejściu.

Jaki sposób zastosowaliśmy? Z pomocą przyszedł nam OPEN OFFICE (wiedziałem, że w tym oprogramowaniu tkwi potencjał!). Krok po kroku:

  • Otworzyliśmy plik CSV za pomocą Open Office CALC. Separatorem w naszych danych był średnik, więc w opcjach separatora zaznaczyliśmy ptaszka przy opcji Średnik.

  • Następnie ten sam plik otworzyliśmy ponownie, tylko przy opcji „Zestaw znaków” – Rysunek 1, wybraliśmy kodowanie UTF-8.
  • W jednym pliku dane wyświetlały się prawidłowo (znaczy się, z polskimi znakami), w drugim polskie znaki były totalnie wykrzaczone. Metoda na to, aby stworzyć taki plik CSV, który przyjmie PrestaSHOP była prosta. Wystarczyło przekopiować kolumny z pliku z kodowaniem ISO do pliku z kodowaniem UTF-8. CALC sam przekonwertował sobie polskie litery w taki sposób, aby były one w UTF-8 i tak na prawdę na tym kończy się cała zabawa.

Co prawda, pliki które otrzymaliśmy były plikami testowymi i ilość danych z nich zawartych ograniczała się do 11 produktów. Nie sprawdzałem, czy może pojawić się problem podczas kopiowania kolumn przy większej ilości produktów. Jeśli ktokolwiek sprawdzał, proszę o informacje.

Oczywiście najlepszym rozwiązaniem byłoby, gdyby eksportowane z różnych źródeł pliki CSV, które będziemy importować do sklepu postawionego na PrestaSHOP, miały od razu kodowanie UTF-8 i zanim zaczniemy kombinować z powyższym rozwiązaniem, warto zapytać dostawcę pliku CSV, czy nie ma możliwości otrzymania go w prawidłowym kodowaniu.

Pakiet openoffice możecie ściągnąć ze strony: http://www.openoffice.org/pl/product.download.html

UPDATE

Jak dobrze zasugerowano w komentarzach, pakiet OO nie jest już rozwijany. Dlatego polecam ściągnięcie następny pakietu OO – pakiet Libre Office: http://pl.libreoffice.org/

Marcin Gerwatowski

Marcin Gerwatowski. Tak się nazywam. 32 lata w 2014 roku. Wyrafinowany realista. Niektórzy mówią, że pesymista – kłamią. Lubie krótkie zdania. Od niedawna bloger. Uczący się. Tak więc, za wszelkie nieścisłości przepraszam!

14 komentarzy

  1. Zamiast nierozwijanego już OO, czas przejść na LibreOffice:
    http://pl.libreoffice.org/

  2. Racja. Tak czy inaczej, opis jak najbardziej aktualny, bo jeśli chodzi o interfejs wiele (jeśli w ogóle coś) się nie zmieniło. LibreOffice to w końcu następca OO.

  3. A czy istnieje możliwość dodania opisu produktu w kilku językach w pliku csv??

  4. Noooo! Dzięki Tobie i OO w końcu zwalczyłam brak polskich znaków diakrytycznych w liście, którą musiałam zaimportować do aplikacji. Dwa dni użerałam się z Wordem – Excelem – Notatnikiem usiłując zapisać plik jako CSV i tylko nerwica mi się pogłębiała. Dzięki wielkie + szacun!

  5. Hej, sam walczyłem z tym długi czas, a sposób jest banalnie prosty 🙂
    Robię to w ten sposób, że otwieram dany plik CSV w najzwyklejszym windowsowskim notatniku, następnie „zapisz jako”, wymieram kodowanie UTF-8 i daję zapisz. Przy imporcie w prestashop, nie zaznaczaj „kodowanie iso-8859-1 „, ma być puste pole. U mnie działa bez problemu. Mam nadzieję, że pomogłem 🙂

  6. Excel pod mac cały czas krzaki robił, a tutaj takie rozwiązanie i to bezpłatne openoffice, i nagle wszystko działa tak jak należy, dzięki!

  7. z notatnikiem cudo.. nie widziałem tam że jest to kodowanie… kto wymyślił to ANSI w ogóle 😛 Na początku myślałem że to żart, ale to prawda! nic bardziej prostego jak zmienić kodowanie w notatniku. Spokojnie Polski narodzie juz sie nie denerwujcie wjadacze internetu

  8. Dzięki za pomoc, jutro ściągam plik od producenta, przynajmniej wiem o co prosić. Rafał – na pewno się przyda. Dam znać, jak mi poszło :).

  9. Ok. csv załadował się prawidłowo. Mam tylko jeden problem – co ze zdjęciami w csv? Jak je załadować razem z resztą danych? Nie mam plików od klienta, muszę je budować. Proszę o instrukcję krok po kroku.

  10. A może wystarczy po prostu:
    iconv -f oryginalne_kodowanie -t utf-8 zły_plik > nowy_plik

Skomentuj Rafal Anuluj pisanie odpowiedzi