Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Błędne kodowanie ("Krzaki") na stronie a zapis do bazy danych
Forum PHP.pl > Forum > Przedszkole
Agape
Witam. Pobieram curlem kawałek innej strony gdzie jest błędne kodowanie i mam słowo ale zapisane jako s?ow zapisuje mi się to do bazy danych jako s i nic więcej ;/ Ucina mi dalszą część zdania ...
plik którym pobieram jest w kodowaniu utf-8 a baza na utf-8_polish_ci
Agape
Ale polskie znaki mi się dodają, jeśli na stronie są w odpowiednim kodowaniu. Jak na stronie są źle podane to wtedy jest problem ;/
Fifi209
Sprawdź kodowanie strony, którą pobierasz, kodowanie plików etc. ;]
Agape
Pobierana strona w meta ustawione ma utf-8. Każda przeglądarka ustawia jej takie kodowanie i są krzaki. Plik którym to pobieram ma ustawione kodowanie utf-8. Dodałem jeszcze nagłówek w php zeby sie upewnić. Tabela w mysql ma utf8_polish_ci. Może jakoś da się podmienić "krzak" na normalną literę. str_replace nie działą przy daniu jako "igłe" skopiowanego krzaka. Myśle ze moze ta strona mieć ustawione złe kodowanie i wyrzuca znak w innym kodowaniu niż jest sama strona.
Ulysess
przy połączeniu z bazą użyj
mysql_query('SET NAMES utf8');
Agape
Właśnie mam ;/ tam polskie znaki wchodzą, nie wchodzi tylko ten krzak ;/
Kod
    $baza_danych = new mysqli($db['host'], $db['nickname'], $db['password'], $db['db']);
    $baza_danych -> query("SET NAMES 'utf8'");
Ulysess
ale wyskakuje ci jeden krzak na poczatku strony questionmark.gif ->zmein na format utf 8 bez BOM. krzaki są w stałej zawartości strony ? czy chodzi o pobierane questionmark.gif może przy dodawaniu rekordów plik nie formatu utf 8 ?
Agape
Krzak jest na stronie tylko w jednym miejscu. W tym miejscu skrypt tej strony pobiera tekst z pliku. Najprawdopodobniej plik ten jest źle zakodowany, powiedzmy w ANSI a strona jest w utf-8 i w takim formacie wyświetla znaki. Przy pobieraniu tego tekstu z pliku wyświetla zamiast ę "krzak".

Strona jest zakodowana w utf-8 i poprawnie wyświetla wszystko inne oprócz tego tekstu który tak jak piszę jest pobierany z prawdopodobnie źle zakodowanego pliku
Spawnm
A jak przefiltrujesz dane przez iconv() to krzak zostaje? Powinien zniknąć.
Agape
Nie próbowałem bo szczerze mówiąc nie wiem jak rozpoznać w jakim kodowaniu zapodany jest tekst ;/
Spawnm
Ale wiesz w jakim formacie jest twoja aplikacja smile.gif
Daj $str =iconv("utf-8", "utf-8//IGNORE", $str);
Agape
"krzak" zniknął. Na jego miejscu jednak nic się nie pojawiło ;/ eh
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.