• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Kodowanie polskich znaków - baza danych PHP

0 głosów
3,009 wizyt
pytanie zadane 14 lipca 2015 w SQL, bazy danych przez Jagoda__ Nowicjusz (150 p.)

Witam serdecznie,

Mam problem z polskimi znakami. 

Zaimportowałam plik ze starymi danymi do PHP MyAdmin. I te dane wyświetlają się na stronie dobrze, czyli z polskimi znakami.Metoda porównania w bazie ustawiona na  utf8_polish_ci. Poprzez formularz dokładam nowe opinie do istniejącej bazy i one już źle wchodzą,czyli wchodzą jako Ä„ŚŻĆŹŃ.

W pliku php jest ustawione     <meta charset="utf-8">

oraz 

mysql_query("SET CHARSET utf8");
mysql_query("SET NAMES 'utf8' COLLATE 'utf8_polish_ci'"); 
 

dane przepuszczam 

$nick =htmlentities($nick, ENT_QUOTES, "UTF-8");
    $mail =htmlentities($mail, ENT_QUOTES, "UTF-8");
    $tresc =htmlentities($tresc, ENT_QUOTES, "UTF-8");
    
    $nick = mysql_real_escape_string($_POST['nick']);
    $mail = mysql_real_escape_string( $_POST['mail']);
    $tresc = mysql_real_escape_string( $_POST['tresc']);

No i wszystkie polskie znaki się sypią. Jak to poprawić?

 

4 odpowiedzi

+1 głos
odpowiedź 14 lipca 2015 przez efiku Szeryf (75,160 p.)
wybrane 15 lipca 2015 przez Jagoda__
 
Najlepsza

Jestem ciekaw na jaki to poradnik natrafiłaś, że stosujesz jeszcze mysql_* ;)
Przejdź na jasną stronę mocy z PDO, albo w ostateczności możesz też przejść na mysqli  (patrz Krecika odp).

Przykład z PDO

$dbHandle = new PDO("mysql:host=$dbHost;dbname=$dbName;charset=utf8", $dbUser, $dbPass,
                    [PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"]);

ew pokombinuj z 'SET NAMES utf8', "SET CHARACTER_SET utf8_polish_ci"

i zobacz czy plik masz na UTF-8 bez BOM. ( domyślnie każde IDE teraz tworzy plik o kodowaniu UTF-8 )

image

+ zamiast

$nick =htmlentities($nick, ENT_QUOTES, "UTF-8"); 
$mail =htmlentities($mail, ENT_QUOTES, "UTF-8"); 
$tresc =htmlentities($tresc, ENT_QUOTES, "UTF-8"); 
  
$nick = mysql_real_escape_string($_POST['nick']); 
$mail = mysql_real_escape_string( $_POST['mail']); 
$tresc = mysql_real_escape_string( $_POST['tresc']);

to :

 $nick = filter_input(INPUT_POST,'nick', FILTER_SANITIZE_STRING );
 $mail = filter_input(INPUT_POST,'mail', FILTER_VALIDATE_EMAIL ); 
$tresc = filter_input(INPUT_POST,'tresc', FILTER_SANITIZE_STRING ); 

 

+4 głosów
odpowiedź 14 lipca 2015 przez krecik1334 Maniak (58,390 p.)

Po 1. Nie używaj zdeprecjonowanego mysql tylko mysqli lub PDO. Po 2. jak już zainwestujesz w mysqli, to jest coś takiego jak:

$mysqli->set_charset("utf8");

 

komentarz 14 lipca 2015 przez efiku Szeryf (75,160 p.)
https://www.facebook.com/groups/336186653256637/permalink/343800962495206/

 Łap.

Jak już coś tworzyć to tylko PDO. ;)
+1 głos
odpowiedź 14 lipca 2015 przez gromula Stary wyjadacz (10,070 p.)
iconv("UTF-8", "Windows-1250") <- może pomoże
+1 głos
odpowiedź 14 lipca 2015 przez Dragonet.17 Pasjonat (19,630 p.)
Dokładnie, nie będę się powtarzał, polecam sposób krecika :)

Podobne pytania

0 głosów
1 odpowiedź 2,739 wizyt
pytanie zadane 20 kwietnia 2016 w SQL, bazy danych przez DCC_IT Początkujący (330 p.)
0 głosów
1 odpowiedź 711 wizyt
+1 głos
1 odpowiedź 1,405 wizyt
pytanie zadane 17 stycznia 2016 w SQL, bazy danych przez andrzej151 Początkujący (300 p.)

93,741 zapytań

142,677 odpowiedzi

323,294 komentarzy

63,324 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...