Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]UTF-8 a UTF-8 BOM
Stef@n
post
Post #1





Grupa: Zarejestrowani
Postów: 191
Pomógł: 3
Dołączył: 14.08.2003

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


Witam, szukałem na forum niestety odpowiedź nie znalazłem - chyba że gdzieś przeoczyłem. Sprawa wygląda tak. Mam plik CSV z danymi kodowany w UTF-8 i wszystko jest OK tekst się wyświetla prawidłowo z polskimi znakami. Problem jest jak chce porównać zmienną np.:
  1. <?php
  2. if($csv['nazwa'] == 'NAZWA')
  3. ?>

chodź zmienna $csv['nazwa'] ma wartość "NAZWA" to okazuje się że nie jest równa i warunek nie działa nawet wtedy jak nie ma tam polskich znaków! Po skonwertowania w Notanik++ pliku na UTF-8 bez BOM wszystko działa.

Moje pytanie to jaka jest w takim razie różnica między wartościami zmiennej $csv['nazwa'] przy UTF-8 a przy UTF-8 bez BOM. oraz jak rozwiązać problem lub skonwertować dany plik lub zmienną w php na UTF-8 bez BOM.

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
YourFrog
post
Post #2





Grupa: Zarejestrowani
Postów: 124
Pomógł: 22
Dołączył: 10.01.2014

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


1. http://pl.wikipedia.org/wiki/BOM_%28informatyka%29
2. strcmp


I nie powinno być problemu. Jeżeli dalej będziesz miał problemy to napisz jak odczytujesz plik bo są przynajmniej 4 metody na odczytanie pliku csv.

Ten post edytował YourFrog 11.01.2014, 12:16:40
Go to the top of the page
+Quote Post
Stef@n
post
Post #3





Grupa: Zarejestrowani
Postów: 191
Pomógł: 3
Dołączył: 14.08.2003

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


No niestety pokazuje nie działa. Plik csv otwieram mniej więcej tak
  1. <?php
  2. $dane = file($src_plik);
  3. for($i=0;$i<count($dane);$i++) {
  4. list($id[$i], $liczba[$i], $nazwa[$i]) = explode(";", $dane[$i]);
  5. }
  6. ?>
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




zrob
var_dump($csv['nazwa']);
a bedziesz wiedzial co dokladnie zawiera twoja tablica. To naprawde takie trudne?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
YourFrog
post
Post #5





Grupa: Zarejestrowani
Postów: 124
Pomógł: 22
Dołączył: 10.01.2014

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


@Stef@n
Widzisz bo utf-8 with BOM na początku posiada znacznik kolejności bajtów (w linku masz wyjaśnione). Ja zawsze 1 wiersz w csv pomijałem bo kazałem w nim dać użytkowniką nagłówki z nazwami kolumn.

Jeżeli nie chcesz mieć pierwszego wierszu z nagłówkami to musisz sprawdzać czy na początku pliku znajdują się jakieś nie pożadane znaki i je usuwać (3 pierwsze bajty).
Go to the top of the page
+Quote Post
Stef@n
post
Post #6





Grupa: Zarejestrowani
Postów: 191
Pomógł: 3
Dołączył: 14.08.2003

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


Cytat(nospor @ 11.01.2014, 21:10:22 ) *
zrob
var_dump($csv['nazwa']);
a bedziesz wiedzial co dokladnie zawiera twoja tablica. To naprawde takie trudne?


wypluwa coś takiego
Cytat
string(8) "OSOBOWA"

Ta zmienia jest zawsze jako ostatnia w wierszu CSV czy nie ma tam może na końcu jakiegoś znaku przejścia do nowej linii "Enter"?
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Ta zmienia jest zawsze jako ostatnia w wierszu CSV czy nie ma tam może na końcu jakiegoś znaku przejścia do nowej linii "Enter"?
No przeciez widzisz, ze jsst.... OSOBOWA ma 7 znakow, a masz wyraznie napisane, ze string zawiera 8. Jest wiec jakis bialy znak, ktorego nie widac. Uzyjt trim i po sprawie


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Stef@n
post
Post #8





Grupa: Zarejestrowani
Postów: 191
Pomógł: 3
Dołączył: 14.08.2003

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


Dzięki wielkie pomogło... Taka mała pierdoła i robiła problem.
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: 21.08.2025 - 03:35