Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Polskie znaki, dopiero po odświeżeniu
castagir
post
Post #1





Grupa: Zarejestrowani
Postów: 146
Pomógł: 3
Dołączył: 28.10.2014

Ostrzeżenie: (10%)
X----


Witam


Potrzebuję pomocy w odkodowywaniu polskich znaków w PHP, które pobrane są z bazy danych.
Wszystko jest zakodowane w UTF-8, także atrubuty do zapytania MySQL są zakodowane w UTF-8.

Problem jest taki. polskie znaki są przechowywane w bazie normalnie, na stronie również są odczytywane, lecz dopiero po odświerzeniu. W czym tkwi problem?
Zauważyłem także, że jeśli zapiszę polskie znaki w postaci encji w bazie danych, to problem nie występuje. Czy powinienem zamieniać wszystkie znaki na encje czy jest jakiś lepszy sposób na rozwiązanie tego problemu?


Pozdrawiam

Ten post edytował castagir 24.12.2014, 11:14:26
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
Rysh
post
Post #2





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

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


Nagłówek w HTML zdefiniowany?
Go to the top of the page
+Quote Post
castagir
post
Post #3





Grupa: Zarejestrowani
Postów: 146
Pomógł: 3
Dołączył: 28.10.2014

Ostrzeżenie: (10%)
X----


Tak.

Na stronie wszystko ładnie wyświetla, tylko, że dopiero po odświeżeniu.
Dodam, że dane są pobierane z MySQL i żeby dobrze były pobrane trzeba odświeżyć.
Go to the top of the page
+Quote Post
viking
post
Post #4





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

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


Pokaż w jaki sposób ustawiasz nagłówki.
Go to the top of the page
+Quote Post
castagir
post
Post #5





Grupa: Zarejestrowani
Postów: 146
Pomógł: 3
Dołączył: 28.10.2014

Ostrzeżenie: (10%)
X----


Nie wiem o co dokładnie Tobie chodzi, więc pokaze wszystko co zawiera kodowanie:


Te dwa pliki dołączam na samym poczatku każdego pliku:
  1. // Dołączenie do skryptu stałych konfiguracyjnych oraz funkcji procedurwalnych:
  2. require('konfiguracja.php'); // W tym pliku zapisane są stałe w których zawarte są informacje potrzebne do połączenia się z bazą danych
  3. require('procedury.php');



Tutaj jest fragment "procedury.php": połączenie z baża, które jest podstawową konstrukcją na, której opierają się wszystkie zapytania w mojej aplikacji:
  1. header('Content-type: text/html; charset=utf8');
  2.  
  3. // Funkcja łącząca z bazą danych:
  4. try {
  5. $polaczenie_bd = new PDO('mysql:host='.NAZWA_SERWERA_BD.';dbname='.NAZWA_BD, NAZWA_UZYT_BD, HASLO_UZYT_BD, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'")) or die('Nie można połączyć się z bazą danych.');
  6. $polaczenie_bd->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
  7. } catch (PDOException $e) {
  8. echo ($e->getMessage()); }



Wstawiam zawsze odniesienie do treści wykonawczej HTML na samym końcu dokumentu:
  1. include('./schematy/standard/naglowek.php');
  2. include('./schematy/standard/glowna.php');
  3. include('./schematy/standard/stopka.php');



To jest treść nagłówka:
  1. <!DOCTYPE html>
  2. <html lang="'; echo $jezyk; echo '">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <title>'; echo $tytul_strony; echo '</title>
  6. <link href="./style_kaskadowe/standard/uklad.css" rel="stylesheet" type="text/css" />
  7. <link href="./style_kaskadowe/standard/tresc.css" rel="stylesheet" type="text/css" />
  8. </head>
  9.  
  10. <body>
  11. <div class="tlo_strony">
  12. <div class="poj_strony">
  13. <div class="poj_gora">
  14. <div class="logo"><img src="./style_kaskadowe/logo_endo_srednie.png" /></div>
  15. <div class="status"><p class="stan_inicjacji">'; echo $stan_inicjacji; echo '</p></div>
  16. <div class="reklama1"><center><h1>REKLAMA</h1></center></div>
  17. </div>';
Go to the top of the page
+Quote Post
viking
post
Post #6





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

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


Według tego powinno być dobrze. Wywal jeszcze or die() bo przechwytujesz wyjątek. Te dane są jakimś ajaxem pobierane? Masz gdzieś na żywo?
Go to the top of the page
+Quote Post
Turson
post
Post #7





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


A czy format pliku masz w UTF8? Ustawia się to bezpośrednio w edytorze tekstowym
Go to the top of the page
+Quote Post
castagir
post
Post #8





Grupa: Zarejestrowani
Postów: 146
Pomógł: 3
Dołączył: 28.10.2014

Ostrzeżenie: (10%)
X----


Ajaxa na razie nie wprowadzełem, bo jeszcze go nie poznałem. Chyba, że tak skonstrułowałem skrypt, że przybiera forme Ajaxa, ale wątpię w to.

Format pliku jak najbardziej w UTF-8.
W internecie czytałem, żeby zmienić format na bez BOM, więc napewt przestawiałęm na UTF-16 i 32, ale wtedy to już w ogóle do niczego strona.
Go to the top of the page
+Quote Post
trueblue
post
Post #9





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Spróbuj usunąć slash w meta charset.

A jeśli nie to w .htaccess:
AddDefaultCharset UTF-8
Go to the top of the page
+Quote Post
castagir
post
Post #10





Grupa: Zarejestrowani
Postów: 146
Pomógł: 3
Dołączył: 28.10.2014

Ostrzeżenie: (10%)
X----


usunięcie ukośnika z meta też nic nie daje.

Go to the top of the page
+Quote Post
viking
post
Post #11





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

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


header i tak zawsze jest najważniejszy. Spróbuj jeszcze linijkę
  1. header('Content-type: text/html; charset=utf8')

wstawić jako pierwszą w index.php przed czymkolwiek innym. Ale moim zdaniem o coś innego w kodzie chodzi. Może być też błąd twojej przeglądarki, zobacz czy w innej jest tak samo.
Odpal też firebug i zobacz jakie nagłówki są wysyłane. Może masz gdzieś namieszane i lecą podwójne albo inne błędy.
Go to the top of the page
+Quote Post
maviozo
post
Post #12





Grupa: Zarejestrowani
Postów: 197
Pomógł: 24
Dołączył: 22.11.2010

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


Może prozaiczne rzeczy typu cache przeglądarki? Patrzyłeś w różnych, a także po zupełnym wyczyszczeniu cache?
Pamiętam, że kiedyś też miałem coś takiego, ale już nie pamiętam, jak to naprawiłem...
I to była jakaś totalna głupota.
Go to the top of the page
+Quote Post
castagir
post
Post #13





Grupa: Zarejestrowani
Postów: 146
Pomógł: 3
Dołączył: 28.10.2014

Ostrzeżenie: (10%)
X----


Sprawdzę czy ten problem występuje tylko u mnie czy również na hostingu. Jak będzie to samo występowało to poproszę o zmianę konfiguracji, a jak nie to napisze edytor, który będzie zmieniać znaki na encje.
Natomiast jeśli na hostingu będzie wszystko w porządku to mi nie będzie przeszkadzać.

@viking, tak. takie coś też próbowałem. Wstawiałem to na samym początku tuż po <?php i nic. To pewnie coś głębiej trzeba szperać, pewnie tak jak radzicie w apache

Ten post edytował castagir 25.12.2014, 11:12:32
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.09.2025 - 19:31