Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 17.07.2008 Skąd: Wrocław Ostrzeżenie: (0%)
|
Witam,
mam problem z wyświetlaniem cyrylicy na stronie. W bazie MySQL mam ustawione strony kodowania i porównywania tekstów na kolejno UTF-8 i utf8_general_ci. Pola w tabeli, w której przetrzymywane są dane zapisane cyrylicą - ustawione jest na utf8_general_ci. Strona ze skryptem, który wprowadza te dane do tabel - ma ustawione kodowanie na utf-8. Strona, na której powinien być wyświetlony tekst w cyrylicy - kodowanie ustawione na utf-8. Mimo tego wszystkiego, na stronie widzę same znaki zapytania. Nie wiem już co zrobić, bardzo proszę o jakieś naprawadzenie na rozwiązanie albo radę... |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%)
|
A czy przy łączeniu z bazą ustawiasz kodowanie połączenia?
btw: Polskie znaki na stronie www |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 80 Dołączył: 31.05.2008 Ostrzeżenie: (20%)
|
Spróbuj zapisywać do bazy danych poprzez htmlspecialchars z ENT_QUOTES i UTF-8, a odczytuj i wyświetlaj za pomocą: htmlspecialchars_decode i ENT_QUOTES. Powinno pomóc, sprawdź jeszcze czy plik też jest kodowany w utf8.
|
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 17.07.2008 Skąd: Wrocław Ostrzeżenie: (0%)
|
Spróbowałem tego co obaj piszecie, najpierw kolejno później i jedną i drugą metodę i efekt jest taki sam jak poprzednio - same znaki zapytania.
Fragment kodu skryptu, który uploaduje do bazy
Fragment, który odpowiada za wyświetlenie wyniku:
Wszystkie pliki są ustawione na utf8, łącznie z CSV. |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 80 Dołączył: 31.05.2008 Ostrzeżenie: (20%)
|
A zobacz w bazie jak Ci przechowuje, może już na samym poziomie bazy się tworzy problem?
@edit pomysł z irca, masz w head ustawiony charset na utf-8? @edit 2 kolejny pomysł z irca, może masz źle dobraną czcionkę? arial/tahoma/verdana propozycja. @edit 3 po ENGINE MYISAM, dodaj DEFAULT CHARSET=utf8, ten pomysł mój. @EDIT tam na dole to ja się poddaje. Ten post edytował cojack 28.09.2009, 13:51:30 |
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 17.07.2008 Skąd: Wrocław Ostrzeżenie: (0%)
|
Podglądałem zawartość bazy PhpMyAdminem i MySQL Query Browserem - w obu przypadkach w bazie jest poprawnie zapisana cyrylica.
W każdym pliku mam ustawione w head charset na utf-8, nie licząc pliku zawierającego same funkcje wypisane, który później jest includowany w głównym pliku. Pomysł z czcionką wydał mi się dobry, bo jak się okazało ustawiałem wszędzie Helveticę, ale po zmianie na Ariala lub Verdanę dalej to samo. Dodałem DEFAULT CHARSET=utf8, wyczyściłem bazę załadowałem dane jeszcze raz, wszystko przeładowane i dalej same znaki zapytania. Tylko w przypadku cyrylicy, polskie znaki czy niemieckie umlauty w tej samej tabeli, które się znajdują wyświetlane są bez problemu. |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%)
|
A w jakim kodowaniu jest ten plik .csv?
Dane w bazie są poprawne po załadowaniu ich z pliku .csv? A jakie jest kodowanie samych plików php? Może przekonwertuj pliki php na UTF8 bez BOM za pomocą np notepad++ ? |
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 17.07.2008 Skąd: Wrocław Ostrzeżenie: (0%)
|
Wszystko jest przekonwertowane na UTF8 właśnie przy pomocy notepad++, dodatkowo dla pewności już jeszcze skorzystałem z gżegżółki na pliku CSV. Świeżo po załadowaniu danych do bazy widzę jest wyświetlone poprawnie w PhpMyAdmin, na stronie nie
|
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%)
|
|
|
|
|
Post
#10
|
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 17.07.2008 Skąd: Wrocław Ostrzeżenie: (0%)
|
Niestety tylko na lokalu i nie mogę tego udostępnić ze względu na dane firmowe (IMG:style_emoticons/default/sad.gif)
|
|
|
|
Post
#11
|
|
|
Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%)
|
To może zrób taki test.
Utwórz nową bazę danych i wypełnij rekordami
Odpal notepad++ utwórz nowy plik (UTF8 bez BOM), zrób proste zapytanie z wyświetleniem:
Zobacz jakie wyniki otrzymasz. Jeśli tutaj będzie ok to znaczy, że musisz przekonwertować pliki (notepad++ doskonale się do tego nadaje, nie trzeba gżegżółki). |
|
|
|
Post
#12
|
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 17.07.2008 Skąd: Wrocław Ostrzeżenie: (0%)
|
Dzięki za pomoc! Twój przykład zadziałał i w sumie dużo mi pomógł. Pliki miałem już wcześniej przekonwertowane przy pomocy notepada++, a dopiero później próbowałem jeszcze dla pewności gżegżółką. Co prawda nadal zamiast cyrylicy mam znaki zapytania, ale teraz mam pewność przynajmniej, że błąd nie leży po stronie bazy (IMG:style_emoticons/default/smile.gif) Dzięki! (IMG:style_emoticons/default/smile.gif)
@EDIT: oczywiście błąd spowodował czynnik ludzki. Wystarczyło dodać: do połączenia przy pobieraniu danych z bazy. Dodałem to oczywiście w złym miejscu, dodałem przy insercie, ale zapomniałem przy klasie odpowiedzialnej za połączenie przy pobieraniu danych. Jeszcze raz dziękuję za pomoc zarówno cojack'owi jak i vokiel'owi! Ten post edytował jakkolwiek 29.09.2009, 09:29:04 |
|
|
|
Post
#13
|
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 80 Dołączył: 31.05.2008 Ostrzeżenie: (20%)
|
Tylko ja się zastanawiam, jak to jest możliwe że przy htmlspecialchars dalej miałeś pytajniki. Dla mnie to jest jakiś absurd.No ale ważne że działa.
|
|
|
|
![]() ![]() |
|
Aktualny czas: 21.12.2025 - 22:17 |