Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> mysql order by utf-8 polskie znaki
AxZx
post
Post #1





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


witam

chce sortowac kolumny z nazwami wojewodztwa wg jego nazwy
dlaczego łódzkie jest na koncu? za zachodniopomorskim?

kodowanie tabeli utf-8

wersja mysql:
4.1.21-log

zapytanie:
  1. CREATE TABLE `wojewodztwa` (
  2. `woj_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `woj_nazwa` varchar(45) character SET utf8 collate utf8_unicode_ci NOT NULL,
  4. PRIMARY KEY (`woj_id`),
  5. UNIQUE KEY `unikalna` (`woj_nazwa`)
  6. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
marcin110987
post
Post #2





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 20.06.2011

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


Cytat(AxZx @ 5.09.2006, 18:02:19 ) *
witam

chce sortowac kolumny z nazwami wojewodztwa wg jego nazwy
dlaczego łódzkie jest na koncu? za zachodniopomorskim?

kodowanie tabeli utf-8

wersja mysql:
4.1.21-log

zapytanie:
  1. CREATE TABLE `wojewodztwa` (
  2. `woj_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `woj_nazwa` varchar(45) character SET utf8 collate utf8_unicode_ci NOT NULL,
  4. PRIMARY KEY (`woj_id`),
  5. UNIQUE KEY `unikalna` (`woj_nazwa`)
  6. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


Wysilę się dla potomych, bo sam jakiś czas szukałem rozwiązania lepszego niż zmiana kodowania kolumny w tabeli z utf8_general_ci na utf_polish_ci.

Jeśli robisz zapytanie w postaci:
  1. SELECT * FROM `wojewodztwa` WHERE 1 ORDER BY `nazwa`
to wynik dostaniesz w kodowaniu takim jak masz zakodowaną kolumnę `nazwa`. Czyli w utf8_general_ci polskie znaki będziesz miał inaczej niż się przyjęło w polskim alfabecie. Np. 'Ł' za 'Z', czy 'Ż' i 'Z' w tym samym miejscu.


Z pomocą przychodzi COLLATE dla zapytania:
  1. SELECT * FROM `wojewodztwa` WHERE 1 ORDER BY `nazwa` COLLATE utf8_polish_ci
teraz nie ważne jest jak masz zakodowane dane w bazie, bo i tak wynik będzie w utf_polish_ci, a resztę możesz mieć cyrylicą i doklejać do siebie wyniki w różnych alfabetach.

Jeśli chcesz czytać z php wyniki, to nie zapomnij o ustawieniu zaraz za połączeniem z bazą "set names utf8", bo dostaniesz krzaki.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 8.10.2025 - 13:24