Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/Mysql] polskie znaki
Forum PHP.pl > Forum > Przedszkole
muru
hi, mam problem z polskimi znakami na stronce(php), która czyta dane z mysql;

mianowicie założyłem tabelę:
  1. CREATE TABLE `T4` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, `nazwa` TINYTEXT NOT NULL, PRIMARY KEY (`id`) ) TYPE=MYISAM CHARACTER SET latin2 COLLATE latin2_general_ci;


do tabeli wpisuje słowo "łódź", jak czytam tabelę spod konsoli mysql jest oki, problem zaczyna się przy próbie przeczytania w php;

co zrobiłem:
1) w headzie dodałem
  1. <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-2">

lipa nadal bez zmian słowo wygląda tak: "?questionmark.gif?d??"

2) dodałem w kodzie po połączeniu z bazą
  1. <?php
  2. mysql_query ("SET NAMES latin2");
  3. ?>

zmiana na "�ódź"

3)dodałem jeszcze
  1. <?php
  2. SET CHARACTER SET latin2;
  3. SET collation_connection = latin2_general_ci;
  4. ?>

no i też krzaki

mam mysql 5

nie używam phpadmina, dodac jeszcze mogą że znaki polskie zawarte w kodzie html na tej stronce przedstawione są dobrze, problem jest tylko z tymi z mysql

ma ktoś moze jakis pomysl?

pozdrawiam
Atomic
twój kod po drobnej poprawce
  1. CREATE TABLE `T4` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, `nazwa` TINYTEXT NOT NULL, PRIMARY KEY (`id`) ) TYPE=MYISAM CHARACTER SET utf8 COLLATE utf8_polish_ci;


mój kod
  1. CREATE TABLE `t4` (
  2. `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `nazwa` tinytext collate utf8_polish_ci NOT NULL,
  4. PRIMARY KEY (`id`)
  5. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;



pobierz mysql front 3.2 bardzo fajny program gorąco polecam
muru
hi, spróbowałem i niestety dalej jest tak samo, myślę, że to jakis bład w kodzie php, moze coś znajdziesz



  1. <body>
  2. <head>
  3. <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-2">
  4. </head>
  5.  
  6. <?php
  7. $tt=T.$_GET['tabele'];
  8. echo '<br>';
  9. $lacze=mysql_connect("localhost","xxxxx","xxxxx")
  10. echo "Polaczenia nawiazane";
  11. echo "<br>baza załadowana";
  12.  
  13. mysql_query ("SET CHARACTER SET latin2");
  14. mysql_query ("SET collation_connection = latin2_general_ci"); 
  15. echo "<br>baza kodoki";
  16.  
  17.  
  18. $zapytanie = "SELECT * FROM $tt";
  19. $idzapytania = mysql_query($zapytanie);
  20. echo '<table border="1">';
  21. $i=1;
  22. while ($wiersz = mysql_fetch_row($idzapytania)) {
  23.  
  24. echo '<tr><td>'. $wiersz[0] .'</td><td>'. $wiersz[1] .'</td></tr>';
  25. echo $i++;
  26. }
  27. echo '<table>';
  28.  
  29.  
  30.  
  31. ?>
  32. </body>


dzięki i pozdrawiam
Atomic
Zamień latin2 na utf8, i latin2_general_ci na utf8_polish_ci.
Zobacz czy twój klient SQl ma możliwość konwersji na utf8_polish_ci, jeżeli nie dodaj do bazy wpis:

ą ę ż ź ć ś ń ł ó

i zamień polskie zanki na te które będą w baźie, prawdopodaobnie zobaczysz coś takiego:

± ê ¿ ¼ æ ¶ ñ ³ ó

lub dodaj wpisy na nowo.

Tylko wcześniej musisz zmienić kodowanie całej bazy, tabeli i pola na kod zanku: utf8 i porównanie utf8_polish_ci.

Tu wpisałem jeden i drugi rząd znaków ą ę ż ź ć ś ń ł ó - ą ę ż ź ć ś ń ł ó, wiec jak sam widzisz gdy dodajesz je przez formularz są jednoznaczne.

Jak już uparłeś się na to:

  1. <?php
  2. mysql_query ("SET CHARACTER SET latin2");
  3. mysql_query ("SET collation_connection = latin2_general_ci");
  4. ?>


to zamień to na:

  1. <?php
  2. mysql_query ("SET CHARACTER SET utf8");
  3. mysql_query ("SET collation_connection = utf8_polish_ci");
  4. ?>


bez tego i tak będzie działać, tylko musisz zmienić kodowanie w bazie!!!


Poszukaj Mysql Front 3.2.2.10 albo napisz to Ci prześle.
bangoo
1. Wyeksportuj bazę i zaimportuj z kodowaniem utf8.
2. Po połączeniu z bazą dodaj:
  1. <?php
  2. $Query = "SET CHARACTER SET latin2";
  3. mysql_query($Query) or die(mysql_error());
  4. $Query = "SET collation_connection = latin2_general_ci";
  5. mysql_query($Query) or die(mysql_error());
  6. ?>

3. Na stronie dodaj:
  1. <meta http-equiv="Content-Type" content="text/html"; charset="utf8">
muru
dzięki, wyjściem okazało się byc stworzenie bazy w utf8, czyli:
  1. CREATE DATABASE bazka DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_polish_ci;



ale pojawił się znowy inny problem mianowicie przy zastosowaniu:
  1. <meta http-equiv="Content-Type" content="text/html"; charset="utf8">


znaki zapytania pojawiają się na stronce przy kodzie html (nie krzaczki tylko znaki zapytania )

jak zmianie na
  1. <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-2">


no to sytuacja się odwraca ( czyli dane z bazy są złe, a te z htmla są ok), czy da sie znaleśc jakiś kompromis?
pozdrawiam



PS w calach edukacyjnych wolałbym na razie unikac nakładek na mysql (Mysql Front 3.2.2.10)
Atomic
przekonwertuj kod strony na utf za pomocą gżegżółki meta ustaw na utf i zobacz jaki to da efekt
bangoo
Jak już mówiłem musisz dodać:
  1. <?php
  2. $Query = "SET CHARACTER SET latin2";
  3. mysql_query($Query) or die(mysql_error());
  4. $Query = "SET collation_connection = latin2_general_ci";
  5. mysql_query($Query) or die(mysql_error());
  6. ?>

Na bank zadziała
muru
uff zadziałało, wielkie dzięki 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.