![]() |
![]() |
![]()
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? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 19.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 17.10.2025 - 11:50 |