Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]konwersja string do UTF-8, iconv
kamilo818
post
Post #1





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.01.2014

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
DraGo110
post
Post #2





Grupa: Zarejestrowani
Postów: 27
Pomógł: 6
Dołączył: 22.12.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


a próbowałeś dodać w naglówku kodowanie?

  1. header('Content-Type: text/html; charset=utf-8');
Go to the top of the page
+Quote Post
droslaw
post
Post #3





Grupa: Zarejestrowani
Postów: 98
Pomógł: 33
Dołączył: 10.05.2011
Skąd: Krak

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
DraGo110
post
Post #4





Grupa: Zarejestrowani
Postów: 27
Pomógł: 6
Dołączył: 22.12.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Jak nagłówki nie mają nic wspólnego - przecież nagłówek formatuje dane "przychodzące" smile.gif
Go to the top of the page
+Quote Post
droslaw
post
Post #5





Grupa: Zarejestrowani
Postów: 98
Pomógł: 33
Dołączył: 10.05.2011
Skąd: Krak

Ostrzeżenie: (0%)
-----


Ale on wczytuje dane z pliku, nie przez HTTP.

Ten post edytował droslaw 26.02.2015, 14:20:38
Go to the top of the page
+Quote Post
kamilo818
post
Post #6





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.01.2014

Ostrzeżenie: (0%)
-----



  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

Ten post edytował kamilo818 26.02.2015, 16:41:21
Go to the top of the page
+Quote Post
viking
post
Post #7





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Spróbuj ASCII//TRANSLIT


--------------------
Go to the top of the page
+Quote Post
kamilo818
post
Post #8





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.01.2014

Ostrzeżenie: (0%)
-----


ten sam błąd
Go to the top of the page
+Quote Post
droslaw
post
Post #9





Grupa: Zarejestrowani
Postów: 98
Pomógł: 33
Dołączył: 10.05.2011
Skąd: Krak

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
kamilo818
post
Post #10





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.01.2014

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 17:06