Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> select z polskimi znakami, mysql nie rozróznia polskich znaków
Koshin
post
Post #1





Grupa: Zarejestrowani
Postów: 196
Pomógł: 0
Dołączył: 29.04.2002
Skąd: jesteś?

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


dwa zapytania:

  1. SELECT *
  2. FROM tablica WHERE nazwa = 'KOŃ';



oraz

  1. SELECT *
  2. FROM tablica WHERE nazwa = 'KON';



Zwraca za każdym razem ten sam zestaw rekordów.

Czy istnieje jakaś możliwość na to aby mysql rozrózniał polskie znaki ?

Wersja MYSQL: 4.0.24

Czy mam podać jeszcze jakieś dane, które bedą pomocne w rozwiązaniu tego problemu?

----edit----
Poprawiłem, ale następnym razem proszę używać bbCode, a dokłądnie znaczników [ sql ] w przypadku zapytań.
~mike_mech


--------------------
My czuwamy.eu abyś mógł spać spokojnie
zapasowakopia.pl - myśl zanim będzie za późno.
Go to the top of the page
+Quote Post
marekk
post
Post #2





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 27.05.2003

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


Chciałbym się dołączyć do pytania - ma dokładnie taki sam problem tzn. z wyświetleniem z bazy przy uzyciu SELECT poprawnych wartosci, własnie wówczas gdy występuje m.in. takie słowo z "ń" i "n" na końcu wyrazu.
Prosiłbym o pomoc w tej sprawie.
Go to the top of the page
+Quote Post
TomASS
post
Post #3





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Zgodnie z zaleceniami tego tematu.
  1. SET NAMES latin2;
  2. SET CHARACTER SET latin2;


--------------------
Go to the top of the page
+Quote Post
Koshin
post
Post #4





Grupa: Zarejestrowani
Postów: 196
Pomógł: 0
Dołączył: 29.04.2002
Skąd: jesteś?

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


Ale znaki pobieraja sie poprawnie, wszystkie polskie znaki sa widoczne.
chodzi o sam select.

jak w zapytaniu wyslac te polecenia?


--------------------
My czuwamy.eu abyś mógł spać spokojnie
zapasowakopia.pl - myśl zanim będzie za późno.
Go to the top of the page
+Quote Post
marekk
post
Post #5





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 27.05.2003

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


No własnie ja znaki w bazie też mam poprawnie wyświetlane, a nawet przy użyciu przed wszelkich wyciagnaniem tych instrukcji z ustawieniem na latin2 dalej jest problem i nie rozroznia słow z "ń".

A troche juz probowałem tych kombinacji... i sam sie zastanawiam czy napewno w tych SET NAMES i SET CHARACTER tkwi problem... :]


Edit -> A jednak Koshin to jest z tym związane choc mi osobiscie te instrukcje SET NAMES itp. cos nie dzialaja... ale dopisałem sobie na sztywno w my.ini (pod win. ale pod linuxem analogicznie):

[client]
default-character-set=latin2

[mysqld]
default-character-set=latin2

Niestety jesli wystawiasz strone gdzies na serwerze musisz admina poprosic o zmiane.

Ja mam jednak mysql-a jeszcze 4.0.15 i mozliwe, ze dlatego nie dzialają mi te funkcje ale do konca nie jestem pewien.

W kazdym razie jak masz nowszą wersje bodajze od 4.1.X wzwyz to nie musisz zmieniac nic w plikach konfiguracyjnych i wystarczy najprawdopodobniej prawidłowo ustawic kodowanie znaków w danej tabeli (moze tez bazie), z której pobierasz dane, systemu porownan oraz przy wyswietlaniu na stronie (jesli domyslnie nie jest takie jak w bazie - tym SET NAMES itp.). Generlanie mniej wiecej musza one zgadzac (np. latin2) choc sa tez rozne inne warianty z tego co wyczytalem.

Ten post edytował marekk 28.09.2005, 10:04:45
Go to the top of the page
+Quote Post
sokar
post
Post #6





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 28.09.2005

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


http://forum.php.pl/index.php?showtopic=35966

SET collation_connection = latin2_general_ci
Go to the top of the page
+Quote Post
marekk
post
Post #7





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 27.05.2003

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


Ale to wcale nie jest rozwiazanie. Ja probowalem wszelkich ustawien z poziomu php-a ale nestety przy starej wersji mysql-a zadne nie poszlo. A dawalem w roznych kombinacja i pojedynczo i razem m.in:


mysql_query("SET NAMES 'latin2'",$link);
mysql_query("SET CHARACTER SET 'latin2'",$link);

mysql_query("character_set_client=latin2", $link);
mysql_query("character_set_connection=latin2", $link);
mysql_query("character_set_database=latin2", $link);
mysql_query("character_set_results=latin2", $link);
mysql_query("character_set_server=latin2", $link);
mysql_query("collation_connection=latin2_general_ci", $link);
mysql_query("collation_database=latin2_general_ci", $link);
mysql_query("collation_server=latin2_general_ci", $link);

Wszystko zalezy chyba od tego jaka masz wersje mysla-a... bo od nowszej 4.1.X jest wieksze pole manewru i mozliwe, iz wtedy przy oiwyzszych ustaiweniach problemy znikaja.
Go to the top of the page
+Quote Post
latet
post
Post #8





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 2.10.2005

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


Cytat(marekk @ 2005-09-28 19:39:39)
mysql_query("SET NAMES 'latin2'",$link);
mysql_query("SET CHARACTER SET 'latin2'",$link);

mysql_query("character_set_client=latin2", $link);
mysql_query("character_set_connection=latin2", $link);
mysql_query("character_set_database=latin2", $link);
mysql_query("character_set_results=latin2", $link);
mysql_query("character_set_server=latin2", $link);
mysql_query("collation_connection=latin2_general_ci", $link);
mysql_query("collation_database=latin2_general_ci", $link);
mysql_query("collation_server=latin2_general_ci", $link);

I tak za każdym razem? Tzn. na początku każdego skryptu odwołującego się do bazy?

latet
Go to the top of the page
+Quote Post

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 Aktualny czas: 20.08.2025 - 11:41