Tagkodowanie

polskie znaki w adresach Joomla SEF URL 2

Joomla w wersji 1.5 posiada przyjazne adresy nazwane skrótowo SEF URL’s (ang. seo friendly URL). Mankamentem tej opcji jest to, że polskie znaki są po prostu opuszczane przy zamienianiu tytułu na alias wykorzystywany w przyjaznych adresach. I tak mając tytuł Zażółć gęślą jaźń powinien zostać przekształcony na alias w postaci zazolc-gesla-jazn natomiast domyślnie Joomla zrobi nam z tego ciąg nieprzypominający zupełnie oryginału za-g-l-ja. Joomla 1.6 jest wolna od tej niedoróbki, transliteruje większość znaków z łacińskiego alfabetu – łacińskopochodnych.

Brak polskich znaków w adresie Joomla

Brak polskich znaków w adresach i aliasach Joomli

Continue reading

O co chodzi z latin1 i dlaczego działają w nim polskie znaki

latin1

Kodowanie ISO/IEC 8859-1 znane pod nazwami takimi jak zachodnioeuropejskie Latin-1 latin1 oraz ISO-8859-1, obojętnie jakiej nazwy użyjemy zawsze chodzi o to samo kodowanie. Ważna zasada, której się trzymajmy i którą wyjaśnię:

kodowanie latin1, ISO-8859-1 nie obsługuje polskich znaków ani nie istnieją one w tym kodowaniu

Polskie znaki jednak jakimś cudem działają, bardzo prosto da się to wyjaśnić: w tym kodowaniu nie ma polskich znaków, ani polskie znaki w nim nie istnieją. Ale jednak jakimś cudem działają… Otóż działają dzięki temu, że wszystkie kodowania z rodziny ISO-8859 są ze sobą zgodne Konwersja z CP-1250 na utf8 – Convert from CP-1250 to utf8.

Bardziej łopatologicznie, mamy stronę w kodowaniu ISO-8859-2 (to kodowanie obsługuje polskie znaki) więc wysyłamy przykładowo ciąg polskich znaków: ą,ć,ę,ł,ń,ó,ś,ź,ż,Ą,Ć,Ę,Ł,Ń,Ó,Ś,Ź,Ż lecz należy pamiętać iż nasz serwer mysql, baza danych oraz tabele jak i kolumny korzystają z kodowania latin1 (najczęściej z porównaniem znaków ustawionym na latin1_swedish_ci) więc powyższy ciąg zostanie zastąpiony krzakami ±,æ,ê,³,ñ,ó,¶,¼,¿,¡,Æ,Ê,£,Ñ,Ó,¦,¬,¯, i niestety po zapisie w bazie mamy krzaczki zamiast polskich znaków Konwersja z ISO-8859-1 na UTF-8 – Convert from ISO-8859-1 to UTF-8.

Lecz należy pamiętać, iż jest o wiele więcej znaków specjalnych, które są zamieniane na krzaczki nie mające nic wspólnego z oryginalnymi znakami.

Ten problem z kodowaniem dotyczy głównie baz mysql, jeśli nie tylko baz. Dlatego zrobiłem konwerter, który przywraca polskie znaki w kopiach baz danych zapisanych za pomocą phpMyAdmin (ponieważ phpMyAdmin zapisuje wszystkie kopie baz danych w kodowaniu UTF-8).

Jeśli kopia została wykonana za pomocą phpMyAdmin lub innego skryptu który koduje kopie baz w UTF-8, a sama baza danych pracuje w kodowaniu latin1 to zrobiłem konwerter Konwersja z latin1 na latin2 – Convert from latin1 to latin2, zamienia krzaczki z takiej kopii na polskie znaki w kodowaniu ISO-8859-2 (przy imporcie takiego pliku należy wybrać z listy latin2) oraz Konwersja z latin1 na utf8 – Convert from latin1 to utf8 który zamienia znów krzaczki w kopii na polskie znaki, tym razem w kodowaniu UTF-8 (przy imporcie wybieramy utf8 z listy).

Należy także pamiętać by w pliku z kopią bazy danych po konwersji z latin1 na latin2 w pliku z kopią zmodyfikować linijki:

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

na:

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES latin2 */;

Przy konwersji z latin1 na utf8 ten zabieg jest zbędny! Przy imporcie za pomocą linii komend także należy podać właściwe kodowanie.

W skrócie, jeśli polskim znakom w twojej kopi bazy odpowiadają krzaczki takie jak w tabelce niżej, to po eksporcie, ten konwerter naprawi twoja bazę. (jeśli miałeś kodowanie latin1) Konwersja z Windows-1250 na ISO-8859-2 – Convert from Windows-1250 to ISO-8859-2

HEXlatin2latin1
b1ą±
e6ćæ
eaęê
b3ł³
f1ńñ
f3óó
b6ś
bcź¼
bfż¿
a1Ą¡
c6ĆÆ
caĘÊ
a3Ł£
d1ŃÑ
d3ÓÓ
a6Ś¦
acŹ¬
afŻ¯

Oraz wywołanie zapytania:

SHOW VARIABLES LIKE 'character_set%';

powoduje wyświetlenie wyników podobnych do tych:

character set clientlatin1
character_set_connectionlatin1
character set databaselatin1
character_set_resultslatin1
character_set_serverlatin1
character_set_systemlatin1

jak i tego:

SHOW VARIABLES LIKE 'collation%';

do tych:

collation_connectionlatin1_swedish_ci
collation_databaselatin1_swedish_ci
collation_serverlatin1_swedish_ci

Oznacza to że w bazie masz kraczki, zamiast właściwych znaków. Należy także pamiętać o ustawieniu właściwego kodowania dla tabel, bazy jak i połączenia z mysql, opisałem to ISO-8859-1 latin1 ISO-8859-2 latin2 Windows-1250 cp-1250 UTF-8 utf8 i jest tam zawarte jak wgrać bazę by przyjęła kodowanie ustawione wcześniej jak i ustawienie kodowania dla połączenia z mysql.

Pragnę przypomnieć, że konwerter kodowania obsługuje całe 167 znaków z kodowania iso-8859-2 zapisane w krzakach z latin1 a nie tylko polskie znaki!

koderek

Koderek

Koderek – jest to wielozadaniowy skrypt napisany w języku PHP. Jego głównym celem jest pomoc, jak i samo naprawianie kodowania polskich znaków. Naprawi krzaki, przywróci polskie znaki… Zajmuje się także odpowiednimi ustawieniami dotyczącymi kodowań jak i porównań.

Umożliwia on konwersje kodowania bazy mysql przeprowadzaną bezpośrednio w bazie. Wszystkie dane są zapisywane w tabelach o prefixie koderek_ dlatego nie musimy się martwić o uszkodzenie aktualnych danych. Po konwersji wystarczy do prefixu tabel dodać koderek_ oraz wymusić odpowiednie kodowanie.

Licencja

Wszelkie prawa zastrzeżone © tosiek
Do użytku wyłącznie nie komercyjnego. Rozpowszechnianie / udostępnianie tylko i wyłącznie poprzez stronę tosiek.pl.
Bez żadnych gwarancji.
Wszelkie prawa zastrzeżone © tosiek

Strzeżcie się zleceniobiorcy :)

Koderek – opcje

Koderek nie ma wyglądać a działać !

  • Konwersja bazy danych – ta opcja konwertuje bezpośrednio wybrane tabele z bazy danych do tabel o prefixie koderek_
  • Aktualne ustawienia kodowania bazy MYSQL -wyświetla ustawienia (wartości) dotyczące kodowania serwera mysql
  • Wyniki ciężkiej roboty: – zawiera informacje i wyniki pracy koderka
    • Koderkowe pomyślności: – informuje o udanych akcjach
    • jak i żądne błędności: – informuje i wyświetla listę błędów, o ile wystąpiły
  • automatyczna aktualizacja – wyświetla informację jeśli posiadasz nieaktualną wersję i daje możliwość automatycznej aktualizacji opcja usunięta
  • Optymalizacja & Wydajność – optymalizowanie, sprawdzanie, naprawa, analiza bazy danych
    • Optymalizacja tabel – optymalizuje wybrane tabele
    • Sprawdzanie tabel – sprawdza tabele
    • Naprawa tabel – naprawia tabele
    • Analiza tabel – analizuje tabele
  • Ustawienia kodowania & porównań dla baz, tabel i kolumn – tutaj znajdują się opcje ustawiające odpowiednie kodowanie bazy danych, tabel oraz kolumn. To nie jest konwersja kodowań !
    • Kodowanie bazy – ustawia domyślne kodowanie oraz porównanie dla bazy
    • Kodowanie tabel – ustawia kodowanie i porównanie tabel
    • Kodowanie kolumn w tabelach – ustawia kodowanie i porównanie dla kolumn w tabelach (dla struktury tabeli)

Pytanie bez odpowiedzi

  • Jak to zainstalować / wgrać ?
  • Pliki koderek.php oraz koderek_config.php wgraj np. do głównego katalogu domeny. (np. katalog public_html) następnie w pliku koderek_config.php ustaw opcje połączenia z bazą oraz hasło (może być dowolne) lub podaj swój adres IP. Potem wejdź / uruchom plik koderek.php np. poprzez adres https://tosiek.pl/koderek.php
    //Tutaj możesz podac swoje IP aby koderek zadziałał
    $your_ip = "";
     
    //Tutaj możesz podać hasło aby koderek zadziałał
    $your_pass = "";
     
    //Nazwa użytkownika bazy danych
    $lesbian_db_user = "";
     
    //Hasło użytkownika bazy danych
    $lesbian_db_pass = "";
     
    //Nazwa bazy danych
    $lesbian_db_name = "";
     
    //Prefix tabel - nie wymagany
    $table_prefix = "prefix_";
     
    //Host dla bazy mysql - pozostaw domyślny
    $lesbian_db_host = "127.0.0.1";
  • Przecież to wszystko ma phpmyadmin…
  • …wiesz co oznacza słowo wszystko ?… łabędzie też ma ?…
    Tak owszem wiele opcji posiada phpmyadmin, lecz opcji zmieniającej kodowanie tabel oraz kolumn (struktury tabeli) nie posiada phpmyadmin.
  • Po kliknięciu przycisku nic się nie dzieje
  • Albo nie wybrałeś opcji (np. wszystkie tabele) albo kodowania z listy. Sprawdź czy dobrze uzupełniono formularz.
  • Nie działa
  • Bardzo możliwe, ale od tego masz listę błędów. Nikt nie jest medium i tylko ty wiesz dlaczego nie działa.
  • Kontakt jest u góry, jakieś propozycje, uwagi, skargi.

Download Koderek

Jest to jedyny i zawsze aktualny download koderka.
Download Koderek

Version history

  • 1.1 – pierwsza wersja z konwerterem bezpośrednio w bazie mysql
  • 1.0 – pierwsza wersja, obsługuje bazę mysql, nie umożliwia konwersji kodowań. Ustawia kodowania + opcje optymalizacyjne