Skocz do zawartości

UTF-8 heeelp


vel

Rekomendowane odpowiedzi

Witam

Mam problem z poprawnym wyświetleniem stronki w utf-8. na localhost działa mi ok (windows, apache). efekt jest dokładnie taki jak na stronie https://www.optymalizacja.com/google-ranking.php . Czyli z danych pobieranych z mysql robią się pytajniki. Baza danych wygląda ok (uploadowana przez phpmyadmin). Po zrobieniu dumpa z tej bazy na komp w pliku widać, że znaki są w utf-8 więc baza chyba jest ok. To w czym może tkwić problem, że są te cholerne pytajniki ??

Any help proszę :huh:

Kup sobie nieruchomości Kraków albo apartamenty Zakopane. Obejrzyj też fotoblog Grzegorza Ziemiańskiego Nowa Huta na deser

Odnośnik do komentarza
Udostępnij na innych stronach

Strona wyświetlająca wyniki powinna wysyłać nagłówek z informacją o kodowaniu:

header("Content-Type: text/html; charset=utf-8");

Jak zauważyłem w praktyce ustawienie w sekcji meta nie wystarcza. Ponadto pliki wchodzące w skład strony np. includowane a zawierajace wyświetlany kod strony itd. muszą być zapisane nie jako ANSI tylko UTF-8 ! Pliki php odpowiedzialne za logikę aplikacji mogą być zapisywane jako ANSI..

Co więcej... nawet jak mamy tablice np.. z tekstem wyświetlanym na stronie musi być zapisywana jako UTF-8. Jak zauważyłem empirycznie "wszystkie" składowe strony, czyli wspomniane includowane pliki, tablice itd.. które będą "wyświetlane" muszą być zapisane jako UTF-8 Inaczej robią się krzaki...

Napisz czy pomogło :huh:

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

ale dlaczego zatem działa to poprawnie na localhost ?? (windoz xp) ?? pliki mam poustawiane tak jak mówisz i jest tu ok. po wrzutce na serwer kicha

i coś na serwerze chyba dziwnie jest ustawiony mysql, bo jak chcę wrzucić wszystko w latin2 (kod + baza) to on i tak bazę sobei zapisuje jako utf ;) wiem, bo po zrobeniu dumpa z phpmyadmina wsio ładnie zapisane jako utf.

już nic z tego nie kumam :huh:

Kup sobie nieruchomości Kraków albo apartamenty Zakopane. Obejrzyj też fotoblog Grzegorza Ziemiańskiego Nowa Huta na deser

Odnośnik do komentarza
Udostępnij na innych stronach

ale dlaczego zatem działa to poprawnie na localhost ?? (windoz xp) ?? pliki mam poustawiane tak jak mówisz i jest tu ok. po wrzutce na serwer kicha

bo pewnie serwer na lokalu wypluwa poprawnie nagłówek ze kodowanie jest w UTF-8 a serwer "na sieci" nie i trzeba zrobić patent który opdał Mion - kiedyś miałem to samo :blush:

Odnośnik do komentarza
Udostępnij na innych stronach

na razie zmieniłem kodowanie htmla na iso2 ale wgranie bazy zrobionej w iso2 powoduje, że i tak jest ona zapisywana na mysql jako utf-8. napisałem do admina, żeby coś z tym zrobił :blush:

jak zacznie działać na iso latin2 to potem będę dumał co z utf :)

aha, a co ciekawsze, jak w kodzie html wpisałęm polskie literki to serwer wyświetlał to pooprawnie w utf-8 (dodałem header content type w php) a dane z bazy danych dalej źle, mimo, że te dane w bazie się zapisały jako utf-8 (sprawdzone w ten sposób, że dump z tej bazy do pliku był w utf-8, chyba żę to zła metoda). pokręcone toto :( ale problem jest nawet ze zwykłym iso latin2, więc na razie męczę administratora ;)

Kup sobie nieruchomości Kraków albo apartamenty Zakopane. Obejrzyj też fotoblog Grzegorza Ziemiańskiego Nowa Huta na deser

Odnośnik do komentarza
Udostępnij na innych stronach

poradziłem sobie

magiczny trick, żeby zadziałało iso-8859-2 to było:

kwerenda: SET NAMES 'latin2'

:blush::(:);):yahoo:

podejrzewam, że teraz jak zapiszę wszystkko co się wyświetla w utf-8 + baza w utf-8 + nagłówek w php wysłany o kodowaniu utf-8 to zacznie śmigać :)

jak będę znał wyniki tego eksperymentu to dam znać, a nóż widelec komuś będzie łatwiej

Kup sobie nieruchomości Kraków albo apartamenty Zakopane. Obejrzyj też fotoblog Grzegorza Ziemiańskiego Nowa Huta na deser

Odnośnik do komentarza
Udostępnij na innych stronach

poradziłem sobie

magiczny trick, żeby zadziałało iso-8859-2 to było:

kwerenda: SET NAMES 'latin2'

ja takiego szczescia nie mialem :blush:

czesto na 'tanich' hostingach sa starsze wersje mysql i z 'set names', 'mysql_set_character_set', i innych opcji to mozna tylko pomarzyc ;(

Note that the syntax for SET NAMES differs from that for setting most other options. This statement is available as of MySQL 4.1.0.

"Lubię samochody i znam się na koniach mechanicznych."

Odnośnik do komentarza
Udostępnij na innych stronach

Jak widać kodowanie to temat rzeka. Tym razem i mnie to dotyka. Problem taki, że wyświetlając wyniki z bazy nie ma pl znaków TYLKO w dużych literach. Cała reszta (małe litery) ma kochane ogonki :/

Kodowanie wszystkich plików i skryptów to utf-8.

System porównań dla polaczenia mysql: utf_general_ci

System kodowania dla pliku: utf-8

System porownan: utf8_polish_ci

System porównań dla każdego rekordu: utf8_bin lub utf8_polish_ci (testowalem obydwie)

Uzywam phpMyAdmin 2.6.1 (lang. pl-utf-8)

W opisie Systemu kodowania znaków i porównań mozna przeczytac:

ucs2_polish_ci oraz utf8_general_ci >> Polski, bez rozróżniania wielkości liter - moze dlatego te duze kszaki a male dobre ??

Jak mam rozumiec: utf8_bin >> Unikod (wiele języków), Binarne

Ma ktos jeszcze jakis pomysl co i jak ustawic ?

Odnośnik do komentarza
Udostępnij na innych stronach

a system porównań po prostu utf-8_general_ci czy jakoś tak ?? w każdym razie general, nie polish, nie bin próbowałeś ?

Kup sobie nieruchomości Kraków albo apartamenty Zakopane. Obejrzyj też fotoblog Grzegorza Ziemiańskiego Nowa Huta na deser

Odnośnik do komentarza
Udostępnij na innych stronach

a system porównań po prostu utf-8_general_ci czy jakoś tak ?? w każdym razie general, nie polish, nie bin próbowałeś ?

System porównań ustawiałem i utf8_polish_ci i utf_bin - po czym od nowa wprowadzałem dane. Nie ma róznicy w moim przypadku. W obydwu przypadkach brak tylko dużego Ł. Reszta ma poprawne znaki. Przypomne tylko ze wszystkie pliki sa jako utf-8.

Odnośnik do komentarza
Udostępnij na innych stronach

ale spróbuj z 'utf8_general_ci', nie utf8_polish_ci czy utf8_bin, tylko właśnie 'utf8_general_ci'

Niestety bez zmian. Zauwazylem cos jeszcze. Dane do mysqla wprowadzam skryptem php z formularza. Zachowanie juz opisalem (brak tylko duzego Ł). Ale wprowadzilem dane do mysqla z phpmyadmin i w wyniku na stronie z zapytaniem dostaje same znaki zapytania.

Vel zauwazylem cos jeszcze - gdy ustawiam utf8_general_ci to przy sortowaniu danych ś jest przed s - czyli lipa :) Gdy mam utf8_bin - sortuje poprawnie

No i chyba mam: po zapytaniu: SHOW VARIABLES LIKE "character_set%"; uzyskałem:

character_set_client utf8

character_set_connection utf8

character_set_database utf8

character_set_results utf8

character_set_server latin1

character_set_system utf8

Czyli kodowanie serwera robi bałagan (o ile dobrze rozumie). W jaki sposób mozna to zmienic ?

Odnośnik do komentarza
Udostępnij na innych stronach

Rozwiazanie tymczasowe:

Przy ladowaniu do bazy jak i wyciaganiu z niej po polaczeniu sie z baza najpierw ustawiam:

(problem tylko z sortowaniem - polskie ogonki są na końcu - z jest przed ą ...)

mysql_query('SET NAMES "UTF8"');

mysql_query("SET collation_connection='utf8'");

mysql_query("SET collation_server='utf8'");

mysql_query("SET character_set_client='utf8'");

mysql_query("SET character_set_connection='utf8'");

mysql_query("SET character_set_results='utf8'");

mysql_query("SET character_set_server='utf8'");

Jakis pomysl co z sortowaniem ??

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności