Tag: collate

ISO-8859-1 latin1 ISO-8859-2 latin2 Windows-1250 cp-1250 UTF-8 utf8

ISO-8859-1 latin1 ISO-8859-2 latin2 Windows-1250 cp-1250 UTF-8 utf8

Głęwiem wstępu intotrintorestycznego do convertera dodałem nowe tablice dla kodowania latin1, w którym polskie znaki są zapisane jako krzaczki, krzaki. Otóż konwersja z kodowania ISO-8859-1, w którym nie istnieją polskie znaki, jest jedynie dla kopii baz danych w pliku wykonanych za pomocą phpMyAdmin czyli plików kopii zapisanych w kodowaniu UTF-8 (w tym kodowaniu phpMyAdmin eksportuje bazę danych do pliku). Poprzednie tablice obsługiwały tylko i wyłącznie polskie znaki, co niestety nie służyło polepszeniu stosunków z innymi narodowe znaki i osobami wykorzystujące te znaki diakrytyczne. Teraz tablice obsługują wszelkie znaki (wszelkie języki) które są w kodowaniu ISO-8859-2 Konwersja z latin1 na utf8 – Convert from latin1 to utf8.

  • Polski
  • Bośniacki
  • Chorwacki
  • Czeski
  • Węgierski
  • Serbski (w transkrypcji łacińskiej)
  • Serbsko-Chorwacki
  • Słowacki
  • Słoweński
  • Górnołużycki
  • Dolnołużycki
  • Angielski
  • Niemiecki
  • sporną kwestią jest język Fiński

Dla porównania, poprzednie tablice do konwersji na utf-8 zawierająca tylko 18 polskich znaków natomiast aktualne zawierają wszystkie znaki dla wszystkich języków i znaków specjalnych zawierająca wszystkie istniejące znaki w tym kodowaniu – 167 znaki.
Teraz po konwersji z latin1 bez problemu można konwertować – wszelkie znaki będą działać!

Kodowanie znaków

Kodowanie znaków
Polega na zapisie znaków w celu ich późniejszego odczytania w tym samym kodowaniu. W skrócie, zapisujemy dane w jednym kodowaniu i następnie by je poprawnie odczytać należy odczytać w tym samym kodowaniu a którym je zapisaliśmy. Zapisujemy w kodowaniu utf-8 i odczytujemy w utf-8. Jeśli odczytamy w innym to pojawia się nam krzaki zamiast oczekiwanych znaków. Różne kodowania obsługują różne znaki, najczęściej nieobsługiwane znaki w danym kodowaniu są zamieniane na znaki zapytania.

Pragnę przypomnieć: w kodowaniu latin1 polskie znaki są zapisane jako krzaki, i po konwersji z kodowania latin1 do ISO-8859-2 lub UTF-8 na stronie Konwersja z latin1 na latin2 – Convert from latin1 to latin2, krzaki zapisane w bazie przemieniają się w polskie znaki (znaki diakrytyczne, narodowościowe, narodowe). Polskie znaki są zapisywane jako krzaki najczęściej na serwerach na których jest domyślna konfiguracja serwera mysql, wyglądająca następująco, konfigurację poznamy wykonując kolejno zapytania:
kodowanie mysql

SHOW VARIABLES LIKE 'character_set%';

domyślna konfiguracja serwera mysql:

character set clientlatin1
character_set_connectionlatin1
character set databaselatin1
character_set_resultslatin1
character_set_serverlatin1
character_set_systemlatin1

porównywanie mysql

domyślne porównania serwera mysql

SHOW VARIABLES LIKE 'collation%';
collation_connectionlatin1_swedish_ci
collation_databaselatin1_swedish_ci
collation_serverlatin1_swedish_ci

Jeśli twoje ustawienia są takie jak powyżej, a działają Ci polskie znaki to oznacza, że nie masz polskich znaków a jedynie krzaczki w bazie danych w kodowaniu latin1 Konwersja z ISO-8859-2 na UTF-8 – Convert from ISO-8859-2 to UTF-8 tak naprawdę mamy mnóstwo krzaków zamiast polskich znaków…

Naprawa krzaczków polskich znaków to zrobienie backupu bazy i konwersja za pomocą konwerter kodowań z latin1 na dowolne inne, należy pamiętać,że przy wgrywaniu takiej przekonwertowanej kopii należy wybrać to samo kodowanie na które przekonwertowaliśmy naszą kopię bazy, należy pamiętać o wybraniu zgodności mysql40 Konwersja z UTF-8 na ISO-8859-2 – Convert from UTF-8 to ISO-8859-2, oraz przed wgraniem należy ustawić kodowanie dla bazy by wgrywane tabele ze zgodnością mysql40 przyjęły właściwe kodowanie (ustawiamy także to samo na które przekonwertowaliśmy bazę) za pomocą zapytania:

ALTER DATABASE nazwa_bazy DEFAULT CHARACTER SET nazwa_kodowania COLLATE porównanie_znaków_dla kodowania;

dla kodowania latin2 będzie to wyglądać tak:

ALTER DATABASE nazwa_bazy DEFAULT CHARACTER SET latin2 COLLATE latin2_general_ci;

dla kodowania utf8:

ALTER DATABASE nazwa_bazy DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Teraz po takim ustawieniu, wszelkie tabele wgrywane ze zgodnością z mysql40 przyjmą kodowanie jakie ustawiliśmy dla bazy danych. Następnie aby je poprawnie odczytać ustawiamy odpowiednie kodowanie za pomocą SET NAMES oraz aby poprawnie wyświetlić ustawiamy odpowiednią definicję kodowania w pliku HTML. Od tej pory w naszej bazie danych istnieją polskie znaki.

Kolejna informacja: latin1 to to samo kodowanie co ISO-8859-1 tylko, że pod inną nazwą. Tak samo jest z latin2, jest to to samo kodowanie co ISO-8859-2. Są to odmienne nazwy, można ich używać zamiennie, zależy także od zastosowania, uproszczone nazwy najczęściej są wykorzystywane w bazach SQL MYSQL

SET NAMES 'utf8' COLLATE 'utf8_unicode_ci'

a ich dłuższe odpowiedniki na stronach w definicji kodowej HTML. Przykładowo dla treści typu text/html oraz kodowania utf-8

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

SET NAMES ‘charset_name’ COLLATE ‘collation_name’

Otóż w każdym skrypcie w jakim łączymy się z mysql powinniśmy tuż po połączeniu z bazą danych ustawić kodowanie i porównanie z jakiego będziemy korzystać. To jest tak samo jak definicja kodowania w dokumencie HTML / XHTML, jeśli nie ustawimy to zdajemy się na wartości serwera, co często jest opłakane w skutkach na przykład będziemy próbować zapisać tekst zakodowany w utf-8 do bazy w kodowaniu latin2 Konwersja z latin2 na utf8 – Convert from latin2 to utf8, życzę powodzenia…

SET NAMES 'charset_name'

Otóż SET NAMES ustawia 3 parametry na raz z których będzie korzystać nasze połączenie z bazą, w miejsce charset_name wstawiamy nazwę kodowania w formacie odpowiednim dla MYSQL (kiedyś może zrobię listę), a te trzy parametry to:

character_set_client
character_set_results
character_set_connection
character_set_client
Ustawia kodowanie dla klienta
character_set_results
Ustawia kodowanie dla wyników zapytań
character_set_connection
Ustawia kodowanie dla połączenia

Konwersja z utf8 na latin2 – Convert from utf8 to latin2
I te 3 ustawienia konfigurujemy za pomocą jednego SET NAMES. Dochodzi jeszcze porównywanie połączeń (collate, collation) które ustawiamy poprzez dodanie drugiego parametru do SET NAMES, wygląda to tak:

SET NAMES 'charset_name' COLLATE 'collation_name'

Porównywanie to w dużym skrócie sortowanie wyników wedle wybranego kodowania (na przykład przy wybraniu utf8_polish_ci wyniki będą sortowane zgodnei z polskim alfabetem – alfabetycznie). Za charset_name wstawiamy nazwę kodowania a za collation_name wstawiamy nazwę porównywania. Parametr COLLATE ustawia 2 parametry na raz:

collation_connection
collation_database

Konwersja z Windows-1250 na UTF-8 – Convert from Windows-1250 to UTF-8

collation_connection
porównywanie znaków dla połączenia
collation_database
porównywanie znaków dla bazy danych

Informacje o dawno zapomnianym koderku https://tosiek.pl/koderek/, oczywiście to wszystko dotyczy konwerter.

Koderek 1.1 – dodany konwerter kodowań

Koderek 1.1 – dodany konwerter kodowań

Wyszła nowa wersja koderka z wbudowanym konwerterem kodowań bezpośrednio w bazie danych mysql.

Wszystkie prze konwertowane dane są zapisywane w kopiach konwertowanych tabel z prefixem koderek_, dlatego nie musimy się obawiać o uszkodzenie aktualnych danych i możemy eksperymentować z konwerterem.

Obsługuje on kodowania takie jak: latin1, latin2, utf8, cp1250.

Po konwersji należy wymusić kodowanie w naszym skrypcie forum / portalu itp. za pomocą zapytania SET NAMES, oraz należy zmienić prefix w tabel na prefix z dodanym koderek_ na początku.

Download Koderek

Download Koderek

Wszelkie prawa zastrzeżone © tosiek

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