Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [MYSQL] Polskie znaki - zrobilem wszystko co mozliwe, a jednak nie działa
Wolfie
post 7.05.2009, 13:54:15
Post #1





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

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


Witam,


Mecze sie z problemem od 3 dni, zrobilem wszystko co trzeba, przeczytalem wszystkie informacje na forum o polskich znakach , skonfigurowalem odpowiednio baze, serwer, pliki notepada++, wszystko na utf8 collation utf8_polish_ci.

Najdziwniejsze jest to ze polskie znaki z tej samej tabeli z roznych kolumn wyswietlaja sie różnie.

Oto eksport z phpMyAdmina :
  1. <?php
  2. SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
  3.  
  4.  
  5. /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
  6. /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
  7. /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
  8. /*!40101 SET NAMES utf8 */;
  9.  
  10. --
  11. -- Baza danych: `comicsite`
  12. --
  13.  
  14. -- --------------------------------------------------------
  15.  
  16. --
  17. -- Struktura tabeli dla  `char_main`
  18. --
  19.  
  20. CREATE TABLE IF NOT EXISTS `char_main` (
  21.  `id` int(11) NOT NULL AUTO_INCREMENT,
  22.  `alias` varchar(40) COLLATE utf8_polish_ci NOT NULL DEFAULT '',
  23.  `real_name` varchar(80) COLLATE utf8_polish_ci NOT NULL DEFAULT '',
  24.  `lair_id` int(11) NOT NULL DEFAULT '0',
  25.  `align` enum('dobry','zły') COLLATE utf8_polish_ci NOT NULL DEFAULT 'dobry',
  26.  PRIMARY KEY (`id`)
  27. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=8 ;
  28.  
  29. --
  30. -- Zrzut danych tabeli `char_main`
  31. --
  32.  
  33. INSERT INTO `char_main` (`id`, `alias`, `real_name`, `lair_id`, `align`) VALUES
  34. (1, 'Albert Grey', '', 1, 'dobry'),
  35. (2, 'Maks Pchełka', '', 4, 'dobry'),
  36. (3, 'John Reed', '', 5, 'dobry'),
  37. (4, 'FreshMan', 'Billy Fisher', 14, 'dobry'),
  38. (5, 'Superman', 'Clarck Kent', 15, 'dobry'),
  39. (6, 'Baranina', 'Jak Kowalski', 18, 'zły'),
  40. (7, 'Hektor', 'Muhamad Abdul', 19, 'zły');
  41. ?>


Jak widać mamy ti dwa przypadki, jeden to Maks PcheÅ‚ka (Maks Pchełka) z kolumny real_name drugi przypadek to "zły" z kolumny align.
Najdziwniejsze jest to ze gdy odpalam strone Maks PcheÅ‚ka wyświetla sie prawidłowo zaś "zły" wyswietla sie ze znakiem zapytania zamiast literki "ł" exclamation.gif

Dodam ze słowo zły jest przetwarzane przed wyświetleniem w tabeli przez str_replace w ten oto sposob :
  1. <?php
  2. $table .= '</table>';
  3.        $table = str_replace('zły',
  4.                             '<font color="red">zły</font>',
  5.                             $table);
  6.        $table = str_replace('dobry',
  7.                             '<font color="darkgreen">dobry</font>',
  8.                             $table);
  9. ?>

zaś Maks Pchełka wyswitelany jest w ten sposob :
  1. <?php
  2. $table .= '<tr bgcolor="#'.$bg.'">'.
  3.                      '<td><a href="charedit.php?c='.$row['id'].'">'.
  4.                      $row['alias'].'</a></td><td>'.
  5. ?>

Gdzie $row['alias'] jest wartościa pobierana z bazy danych

Ludzie pomozcie , juz pytalem znajomych programistow kogo sie dało i nic......wstawie 100x pomogł za pomoc sciana.gif
Go to the top of the page
+Quote Post
redelek
post 7.05.2009, 14:13:51
Post #2





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

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


Przed zapytaniem a po połączeniu do bazy daj sobie coś takiego
  1. <?php
  2. mysql_query("SET NAMES UTF-8");
  3. ?>


Ja tak mam dopisane przed dodaniem i pobieraniem danych i wszystko działa poprawnie.
Zobacz jakie kodowanie ma Twój serwer to też częsta przyczyna.

Pozdrawiam
Redelek


--------------------
Pozdrawiam
Piotrek R
Go to the top of the page
+Quote Post
pianta_d
post 7.05.2009, 14:21:03
Post #3





Grupa: Zarejestrowani
Postów: 176
Pomógł: 18
Dołączył: 5.01.2007

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


Ja mam u siebie troszkę rozszerzone

  1. <?php
  2. mysql_query("SET CHARACTER latin2", $connection);
  3. mysql_query("SET NAMES latin2", $connection);
  4. mysql_query("SET CHARACTER_SET latin2", $connection);
  5. ?>


i u mnie działa. Zmień sobie odpowiednie wartości i też powinno hulać. guitar.gif
Go to the top of the page
+Quote Post
Wolfie
post 7.05.2009, 14:21:48
Post #4





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

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


Mam to dopisane, i dzieki temu wogle sie wyswietla, bo wczesnie wogole sie nei wyswietlalo nawet ze znakiem zapytania, a co do serwera to tez ustawiony raczej na utf8, mozesz jeszcz powiedziec gdzie to sie sprawdza zebym sie upewnił....

pianta_d przed chwila tez dodałem to co napisales wyzej mimo ze wszystkie wartosci mam ustawione w bazie bankowo na utf8, dopisalem oczywiscie swoja wersje czyli z utf8 ale nic sie nie zmienilo.....

Ten post edytował Wolfie 7.05.2009, 14:25:42
Go to the top of the page
+Quote Post
pianta_d
post 7.05.2009, 14:24:58
Post #5





Grupa: Zarejestrowani
Postów: 176
Pomógł: 18
Dołączył: 5.01.2007

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


Sprawdzasz w phpmyadmin

Zacytuje kiedyś dawno pisany wątek z tego rofum.

- przed pierwszym zapytaniem do bazy mam mysql_query('SET NAMES LATIN2');
- kodowanie w meta mam iso-8859-2 (zapisane przez jakiś edytor, a nie notatnik)
- system kodowania znaków dla MySQL: UTF-8 Unicode (utf8)
- system porównań dla połączenia MySQL: UTF8_Unicode_ci
- metoda porównywania napisów: latin2_general_ci

Ten post edytował pianta_d 7.05.2009, 14:26:12
Go to the top of the page
+Quote Post
Wolfie
post 7.05.2009, 14:26:57
Post #6





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

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


Ale ja to wszystko mam juz ustawione na utf8, przeciez pisalem ze od 3 dni sie z tym borykam......notepad , bazy danych i cala ta reszta jest usawiona na utf8.....

Zreszta tak jak mowilem w pierwszym poscie, nawet z tej samej tabeli literki polskie wyswietlaja sie poprawnie, z innych tabel na tej samej stronie tez poprawnie tylko z tej jednej kolumny dane wstawiaja sie ze znakiem zapytania....wiec widac wyraznie ze serwer i cala reszta jest skonfigurowana poprawnie, dlatego podejrzewam ze cos jest nie tak przez funkcje str_replace bo to w zasadzie jedyna roznica przy przetwarzaniu danych tam gdzie wyswietla sie zle.....

Ten post edytował Wolfie 7.05.2009, 14:29:42
Go to the top of the page
+Quote Post
pianta_d
post 7.05.2009, 14:31:28
Post #7





Grupa: Zarejestrowani
Postów: 176
Pomógł: 18
Dołączył: 5.01.2007

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


Nie wiem czy nie będziesz musiał wyedytować wpisów, które już masz w bazie.

Ja kiedyś też miałem podobny. Wtedy zrobiłem tak, że wyedytowałem każdy wpis do bazy poprawiając w odpowiednim kodowaniu, oczywiście jeśli wpisów jest mało.
Jeśli u masz dużo wpisów, skorzystaj z Gżegżółki
Go to the top of the page
+Quote Post
Wolfie
post 7.05.2009, 14:33:18
Post #8





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

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


Tak , mogłbym to wyedytowac ale wstawiajac nowe dane przez formularz na stronie do bazy danych powtorzy sie ten sam problem.....a ja bym chcial naprawic przyczyne a nie skutek winksmiley.jpg

Ten post edytował Wolfie 7.05.2009, 14:39:45
Go to the top of the page
+Quote Post
pianta_d
post 7.05.2009, 14:38:52
Post #9





Grupa: Zarejestrowani
Postów: 176
Pomógł: 18
Dołączył: 5.01.2007

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


A może masz problem z kodowanie tego konkretnego pola questionmark.gif
Go to the top of the page
+Quote Post
Wolfie
post 7.05.2009, 14:39:29
Post #10





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

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


Kodowanie dla tej tabeli i dla kolumny tej tabali tez jest usawione na utf8.....

No i znowu wszyscy mnie olali sad.gif

Ten post edytował Wolfie 7.05.2009, 14:43:25
Go to the top of the page
+Quote Post
pianta_d
post 7.05.2009, 14:51:28
Post #11





Grupa: Zarejestrowani
Postów: 176
Pomógł: 18
Dołączył: 5.01.2007

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


Znalazłem coś takiego convert
Go to the top of the page
+Quote Post
Wolfie
post 7.05.2009, 14:59:55
Post #12





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

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


No tak tylko po co mam konwertowac z utf8 na utf8 .... ?
Go to the top of the page
+Quote Post
pianta_d
post 7.05.2009, 15:03:08
Post #13





Grupa: Zarejestrowani
Postów: 176
Pomógł: 18
Dołączył: 5.01.2007

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


A zamiast utf8_polish_ci daj utf8_general_ci
Go to the top of the page
+Quote Post
Wolfie
post 7.05.2009, 15:04:39
Post #14





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

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


ale tylko w tej kolumnie tabeli gdzie wyswietla sie zle ?
Go to the top of the page
+Quote Post
athei
post 7.05.2009, 15:05:24
Post #15





Grupa: Zarejestrowani
Postów: 389
Pomógł: 141
Dołączył: 11.04.2009

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


Cytat(pianta_d @ 7.05.2009, 16:03:08 ) *
A zamiast utf8_polish_ci daj utf8_general_ci


Nie ma sensu. Utf8_general_ci ma problemy przy wyrazach zaczynających się od polskiej litery np.Łódź i źle je sortuje dając je na końcu.
Go to the top of the page
+Quote Post
zelu
post 7.05.2009, 15:07:31
Post #16





Grupa: Zarejestrowani
Postów: 229
Pomógł: 34
Dołączył: 7.12.2008
Skąd: Poznań

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


A nie korzystasz z jakiś funkcji operujących na stringach przed zapisaniem ich w bazie? Np strtolower(), albo coś podobnego? Takie funkcje też lubią namieszać.


Pozdro
Go to the top of the page
+Quote Post
Wolfie
post 7.05.2009, 15:12:00
Post #17





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

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


Tak jak napisalem w pierwszym poscie, korzystam z funkcji str_replace, w pierwszym poscie widac dokładnie jak to jest zastosowane.....
Go to the top of the page
+Quote Post
zelu
post 7.05.2009, 15:14:28
Post #18





Grupa: Zarejestrowani
Postów: 229
Pomógł: 34
Dołączył: 7.12.2008
Skąd: Poznań

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


Ale to jest funkcja, której używasz do wyświetlania danych. A mi chodziło od etap, pomiędzy pobraniem nazwy z pola input, a wstawieniem jej do bazy.
Go to the top of the page
+Quote Post
Wolfie
post 7.05.2009, 15:20:32
Post #19





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

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


Nie, przed wstawieniem do bazy nie przetwarzam zadna funkcja.....

W skrypcie pobierajacym dane wyswietlilem tablice danych ktore pobieram z formularza i wygląda ona poprawnie, wszystko ładnie z polskimi literami :

Cytat
Array ( [alias] => Wilkołak [name] => Robert Drake [powers] => Array ( [0] => 24 [1] => 27 ) [address] => ul. Krótka [city] => Łódź [state] => ŁD [zip] => 93-222 [align] => zły [action] => Utwórz postać [cid] => 0 ) 1
Go to the top of the page
+Quote Post
zelu
post 7.05.2009, 15:24:26
Post #20





Grupa: Zarejestrowani
Postów: 229
Pomógł: 34
Dołączył: 7.12.2008
Skąd: Poznań

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


A jak dodasz jakąś następną osobę z polskimi znaczkami to też jest coś pomieszane? I spróbuj dodać coś przez PhpMyAdmina... Daj znać czy również są błędy
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 12:53