Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyszukiwanie w bazie polskich liter
pgrzelka
post
Post #1





Grupa: Zarejestrowani
Postów: 313
Pomógł: 24
Dołączył: 9.08.2008
Skąd: Kielce

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


Witam

mam w bazie rekordy

Łódź
Będzin
Fläming
itd...

ogólnie lista miast z całej europy

teraz chcę wyszukać w tej bazie za pomocą LIKE %% np.
'odz' - znajdzie Łódź
'fla' - znajdzie Fläming
'Lod' - czemu nie znajduje 'Ł' jeśli w LIKE damy 'L'? tylko z tą literą jest problem

kodowanie w tabeli to utf_general_ci, ogólnie wszystko jest ustawione na utf_general_ci

czy zna ktoś rozwiązanie mojego problemu?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
LBula
post
Post #2





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 19.06.2011

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


Cytat(pmir13 @ 6.05.2011, 21:29:24 ) *
Rozwiązaniem jest stworzenie własnego collate, obejdzie się bez kompilowania mysql, chociaż źródła się mogą przydać by skopiować utf_general_ci i tylko zmiany wprowadzić. Oczywiście trzeba mieć nieco lepszy dostęp do serwera niż standardowy hosting. W odpowiednim pliku xml można zdefiniować taki collate, w którym Ł i ł wejdą do L, ut8_general_ci jest najbliżej wspólnego ładowania wszystkich ogonków z europejskich języków w podstawowe litery, ale akurat Ł i ł mają osobną wagę.


Mam prośbę o rozwinięcie w/w post'a. Wydaje mi się, że z uwagi na to, że MySQL nie uznał tego za bug i od kilku lat nic się w tym temacie nie zmieniło jest to jedyne słuszne rozwiązanie problemu. Mam pełny dostęp do serwera i opisany problem z literą "ł". Rozumiem, że chodzi o rozwiązanie opisane tutaj:

http://dev.mysql.com/doc/refman/5.0/en/add...imple-8bit.html

W pliku Index.xml kodowanie utf8_general_ci (bo domyślam się, że to kodowanie miałeś na myśli i pominąłeś 8) ma flagę 'compiled', w związku z tym nie ma osobnego pliku xml z opisem mapy jak w przypadku ascii, latin1, latin2 itd.

W pliku README w katalogu charsets w którym znajdują się w/w pliki xml w odpowiedzi na pytanie "When should a character set be compiled in to MySQL's string library (libmystrings), and when should it be placed in a charset_name.xml configuration file?" otrzymujemy odpowiedź "If the character set requires the strcoll functions or is a multi-byte character set, it MUST be compiled in to the string library. If it does not require these functions, it should be placed in a charset_name.xml configuration file.". Rozumiem, że skoro utf-8 jest multi-byte to nie da się podmienić działania collate utf8_general_ci dla litery "ł" bez rekompilacji MySQL?

Na stronie MySQL'a możemy jeszcze przeczytać coś takiego:

http://dev.mysql.com/doc/refman/5.0/en/add...nicode-uca.html

Ma ktoś pomysł jak poradzić sobie z tym problemem?

Ten post edytował LBula 19.06.2011, 15:42:03
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: 17.10.2025 - 11:50