Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MSSQL]Polskie znaki
Forum PHP.pl > Forum > Przedszkole
Kloc
Może mi ktoś pomóc, bo już naprawdę nie wiem o co chodzi.
Mam jakiś plik php z kodowaniem UTF-8

Kod
<!doctype html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>...</title>
    </head>
    <body>
        HTML:  ą ę ć ń ź ż ó ł ś<br />
<?Php

mysql_connect("localhost", "login", "haslo")or die("Nie można nawiązać połączenia z bazą");
mysql_select_db("baza")or die("Wystąpił błąd podczas wybierania bazy danych");

mysql_query("SET NAMES utf8");
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET collation_connection = utf8");


$zapytanie1 = "SELECT * FROM `tabela` ";
$idzzapytanie1 = mysql_query($zapytanie1);
while($pokaz = mysql_fetch_array($idzzapytanie1))
{
$opis = $pokaz['1'];
}

echo "PHP:  ą ę ć ń ź ż ó ł ś <br />
MYSQL: $opis";

?>

    </body>
</html>


Znaki po HTML i PHP wyświetlają się prawidłowo, ale te po MYSQL już nie. W efekcie otrzymuję coś takiego: ± ê æ ñ ¼ ¿ ó ³ 
Gdy usunę to:

Kod
mysql_query("SET NAMES utf8");
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET collation_connection = utf8");


Mam same krzaki: � � � � � � � � �

Moja baza ma ustawione kodowanie utf8_general_ci, to samo tabela
Macie może jakiś pomysł jak mogę wyświetlić tam polskie znaki?
viking
Zapewne źle zaimportowałeś dane do mysql. Spróbuj jeszcze raz.
http://en.wikipedia.org/wiki/Microsoft_SQL_Server http://en.wikipedia.org/wiki/MySQL odnośnie tagu w temacie
Turson
Ja osobiście radzę wejść w strukturę tabeli i zmienić kodowanie na utf8_polish_ci + http://turson.pl/blog/php/polskie-znaki-w-dokumencie-php i nie ma prawa wystąpić jakiś problem smile.gif
Kloc
U mnie w pliku php są polskie znaki tylko nie ma tych pobranych z bazy, ale zmieniłem na utf8_polish_ci i efekt jak widać.

Kloc
Tak jak bym po części rozwiązał ten problem. Kodowanie Utf-8 bez BOM i brak:

Kod
<meta charset="UTF-8">



Kod
mysql_query("SET NAMES utf8");
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET collation_connection = utf8_polish_ci");


Wtedy znaki po php i html zamieniają się na ą ę ć ń Ĺş Ĺź Ăł ł ś, a te z mysql są wyświetlane prawidłowo.
Qss
ostatnio miałem taki sam cyrk z wyświetlaniem jak przeniosłem stronę na serwer okazało się ze na PHP 5.3.x coś nie działało na wyższych zaczęło nagle wyświetlać poprawnie.
najlepsze jest to że w kodzie jako takim wyświetlało krzaki a jak wyświetliłem wartość jako value w inpucie działało ;S
Aha i jak wchodzisz np. do phpmyadnima sprawdzić dane w mysql to rozumiem że tam są polskie znaki a nie krzaczki ?
Kloc
W phpmyadmin są takie wygibasy jak na zdjęciu powyżej. A jak chce bezpośrednio wpisać tam ą itp to wyskakuj mi błąd.
Turson
Jeśli zmieniłeś kodowanie znaków w PhpMyAdmin na utf8_polish_ci to zacznie ono kodować dopiero nowe wpisy, stare nie. Dodaj nowy w tym kodowaniu i powinno być dobrze już.
Jeśli nie zależy Ci na danych w tabeli to najlepiej usuń wszystkie rekordy albo drop tabeli, potem kodowanie na utf8_polish_ci
Qss
prawdopodobnie ze wszystkie pola tekstowe w bazie nie są w kodowaniu utf8_polish_ci tylko pewnie jakimś latin1..
Kloc
Cytat(Qss @ 4.11.2013, 11:47:08 ) *
prawdopodobnie ze wszystkie pola tekstowe w bazie nie są w kodowaniu utf8_polish_ci tylko pewnie jakimś latin1..


Zgadza się baza danych na utf8_polish_ci tabela na utf8_polish_ci a pola tekstowe na latiny .
Już wszystko pięknie działa biggrin.gif Dziękuje za pomoc.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.