Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]konwersja string do UTF-8
Forum PHP.pl > Forum > Przedszkole
kamilo818
Mam problem z konwersja stringa do UTF-8.
Chce importowac z pliku *.csv kontakty z outlooka.

  1. while(! feof($file))
  2. {
  3. $data = fgetcsv($file);
  4. $data[1] = iconv(mb_detect_encoding($data[1]),"UTF-8",$data[1]);
  5. }


W taki sposób usuwa mi wogole polskie znaki i zamiast 'Michał' do bazy trafia 'Micha'

Co jest źle?
DraGo110
a próbowałeś dodać w naglówku kodowanie?

  1. header('Content-Type: text/html; charset=utf-8');
droslaw
Nagłówki nie mają nic do tego. Problem może leżeć w tym, że mb_detect_encoding nie wykrywa kodowania(w tedy zwraca false).

Podaj jako drugi argument listę potencjalnych kodowań np:

  1. iconv(mb_detect_encoding($data[1], 'WINDOWS-1250, ISO-8859-2'),"UTF-8",$data[1]);


Może to pomoże.
DraGo110
Jak nagłówki nie mają nic wspólnego - przecież nagłówek formatuje dane "przychodzące" smile.gif
droslaw
Ale on wczytuje dane z pliku, nie przez HTTP.
kamilo818

  1. iconv(mb_detect_encoding($data[1], 'WINDOWS-1250, ISO-8859-2'),"UTF-8",$data[1]);
  2.  


Niestety to też nie działa.

Warning: mb_detect_encoding() [function.mb-detect-encoding]: Illegal argument
viking
Spróbuj ASCII//TRANSLIT
kamilo818
ten sam błąd
droslaw
Jakie zestawy znaków bierzesz pod uwagę? Jeśli nie dogadasz się z funkcją mb_detect_encoding a dane wejściowe mogą być tylko w np. iso-8859-2 albo cp-1250 to nawet można napisać prostą klasę, która wykrywa kodowanie. O ile problem rzeczywiście leży tu.
kamilo818
mb_detect_encoding odczytuje poprawnie kodowanie.
Ale nie moge sobie poradzić z tą konwersją.
Jak sam plik przekonwertuje z na UTF-8 to działa ok.

Nie da się w locie w php przekonwertować pliku na UTF-8? Np podczas uploadu?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.