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

question-closed Brak polskich znaków w MySql

+2 głosów
7,408 wizyt
pytanie zadane 17 czerwca 2016 w SQL, bazy danych przez Mr Popcorn Bywalec (2,340 p.)
zamknięte 18 czerwca 2016 przez Mr Popcorn

Kłaniam się z góry, jak rzadko który...

Mimo iż mam WSZĘDZIE ustawione kodowanie na UTF-8, to w mojej bazie nie pokazują się polskie znaki.

 

<?php
  	mb_http_input("utf8");
	mb_http_output("utf8");
	
	$db_host = "localhost";
	$db_user = "mrpopcorn";
	$db_pass = "mrpopcorn";
	$db_name = "vtc";

	$polaczenie = new MySQLi($db_host,$db_user,$db_pass,$db_name);
	$polaczenie->set_charset("utf8");
	
	$polaczenie->query("SET NAMES 'utf8' COLLATE 'utf8_polish_ci'");
	$polaczenie->query("SET CHARSET utf8");

	if(!$polaczenie) {
		die("NIE UDAŁO SIĘ POŁĄCZYĆ Z BAZĄ DANYCH");
	}
?>

 

<?php 
if (!mysqli_set_charset($polaczenie, "utf8")) {
		die("Wystąpił problem z kodowaniem UTF-8.");
		exit();
	}
?>

Już naprawdę nie wiem co robić.

Zrobiłem już wszystko co się zrobić dało.

Teraz tylko polska literka "ó" się nie chce wyświetlić
tam są słowa żółć i źdźbło

 

komentarz zamknięcia: Problem rozwiązano. Dziękuje.

4 odpowiedzi

+1 głos
odpowiedź 17 czerwca 2016 przez Tomasz90 Nałogowiec (25,140 p.)

bazę tworzyłeś w ten sposób?

 

CREATE DATABASE mydb
  DEFAULT CHARACTER SET utf8
  DEFAULT COLLATE utf8_general_ci;

 

ja tak tworzylem przez wiersz poleceń i miałem polskie znaki

komentarz 17 czerwca 2016 przez Mr Popcorn Bywalec (2,340 p.)

 

Ja nie, ja stworzyłem bazę ręcznie w PMA.

 

 

Dodam, że używam funkcji htmlentities, podobno to ona psuje polskie znaki...

komentarz 17 czerwca 2016 przez Tomasz90 Nałogowiec (25,140 p.)
ja się na php nie znam ale jak wywołanie tej funkcji u Ciebie wygląda. W sensie czy jako 3 parametr podajesz UTF-8 ?
+1 głos
odpowiedź 17 czerwca 2016 przez GaCeL Dyskutant (7,500 p.)

Użyj 

htmlspecialchars($string, ENT_QUOTES, "UTF-8")

 

komentarz 17 czerwca 2016 przez Mr Popcorn Bywalec (2,340 p.)
też nie zadziałało
0 głosów
odpowiedź 18 czerwca 2016 przez Mr Popcorn Bywalec (2,340 p.)
Odświeżam temat. Bardzo potrzebuję Waszej pomocy. Stoję teraz z projektem w miejscu.
komentarz 18 czerwca 2016 przez obl Maniak (51,300 p.)
Moje pytanie jest takie: czy jak tworzyłeś swoją bazę danych od razu wybrałeś kodowanie utf8_polish_ci? Czy dopiero później zmieniłeś to kodowanie na poprawne?

Pytam bo ja z ciekawości u siebie zrobiłem oddzielną bazę danych i mam poprawnie obsłużone polskie znaki. Pamiętam też, że kiedyś też się szarpałem z tym, niby wszystko poprzestawiałem ręcznie na odpowiednie kodowanie a i tak wyskakiwały mi tylko krzaczki zamiast polskich liter. Po utworzeniu nowej bazy z poprawnie ustawionym na samym początku kodowaniem problem w końcu u mnie został rozwiązany. Spróbuj zrobić jakąś oddzielną małą bazę i na początku samym gdy ją tworzysz daj kodowanie utf8_polish_ci.
komentarz 18 czerwca 2016 przez Mr Popcorn Bywalec (2,340 p.)

Dziękuje Ci obl...

W momencie tworzenia bazy danych, jako Collation ustawiłem utf8_bin.
Potem zmieniłem wszystko na utf8_polish_ci ale baza nadal nie wyświetlała polskich znaków, zarówno w tych starych wpisach, jak tych świeżo dodanych, już po zmianie kodowania.

Wkurzyłem się i usunąłem tą bazę, stworzyłem nową wybierająć utf8_polish_ci i wszystko działa jak należy.

komentarz 18 czerwca 2016 przez obl Maniak (51,300 p.)

No niestety ja też siedziałem kiedyś przez to kilka godzin przed kompem i mnie normalnie nerwy nosiły że masakra. W końcu spróbowałem zrobić oddzielną bazę, żeby sprawdzić czy to przez to i wtedy zrozumiałem, że tak, to przez to.

–2 głosów
odpowiedź 17 czerwca 2016 przez obl Maniak (51,300 p.)
edycja 17 czerwca 2016 przez obl

Ja u siebie utworzyłem bazę danych w phpMyAdmin z wybranym kodowaniem utf8_polish_ci  a następnie połączyłem się z bazą danych:

$dbc = @mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) OR die ('Nie mogłem połączyć się z MySQL-em: ' . mysql_error() );
@mysql_select_db(DB_NAME) OR die ('Nie udało mi się wybrać bazy danych: ' . mysql_error() );
mysql_query ("SET NAMES utf8");
				
$table = mysql_query("SELECT * FROM test1");
				
while($linia = mysql_fetch_array($table)){
	echo('<p>' . $linia['description'] . '</p>');
}
				
mysql_close($dbc);

Dzięki czemu wyświetliła mi się na ekranie zawartość pola descritpion tabeli test1, w którym zapisałem: zażółć gęślą jaźń i napis wyświetlił się prawidłowo (z polskimi literkami).

komentarz 17 czerwca 2016 przez majfirst Obywatel (1,200 p.)
@ and mysql_* srsly?

Podobne pytania

0 głosów
1 odpowiedź 1,759 wizyt
pytanie zadane 8 lipca 2016 w PHP przez Adrian1999 Nałogowiec (34,570 p.)
0 głosów
0 odpowiedzi 981 wizyt
pytanie zadane 1 sierpnia 2018 w PHP przez lukii1717 Nowicjusz (140 p.)

93,800 zapytań

142,770 odpowiedzi

323,463 komentarzy

63,421 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.

...