Polskie znaki w MySQL

Maciej Piwowski
05.09.2015

Pisząc system newsów natknąłem się na pewien problem. Problem, który jak się okazało jest odwiecznym problemem programistów.

Google ledwo wyrabia pokazując linki do for internetowych gdzie padają pytania na ten temat.
Tym problemem jest wyświetlanie polskich znaków w danych pobieranych z bazy danych.
Jak się już pewnie domyślasz chodzi o kodowanie. pewnie myślisz, że to jest proste. Jednak ja spędziłem cały dzień na rozwiązaniu tego problemu, ponieważ wszystko inne zawiodło w przypadku akurat tego projektu.

Podstawą, którą powinieneś wykonać, zanim przejdziesz do działań opisanych w dalszej części tego artykułu jest wykonanie polecenia SQL dla całej bazy danych:

SET NAMES utf8

Szukając rozwiązania gdy wszystko inne zawiodło, znalazłem kilka naprawdę dobrych artykułów. Jednak nie one były rozwiązaniem, wydedukowałem co następuje:

Kluczem do rozwiązania jest prosty programik, który znalazłem w sieci. Autorstwa Tomasza Sobola, moje ukłony dla niego Smile.
Program ów (ściągnij) koduje tekst napisany po polsku w systemie porównań UFT-8.
(W programie tym podajesz nazwę pliku, w którym masz napisany tekst - musi być w tym sam katalogu, on konwertuje i zapisuje do pliku uft8.txt)
Skonwertowany tekst wklejasz do odpowiedniego rekordu w bazie danych.

Teraz pora na krok drugi...
Odszukaj na swojej stronie sekcję head i wklej to:

 

Trzeci krok: W całej swojej bazie danych ustaw system porównywania na: latin7_general_ci (dla PhpMyAdmin 4.1)
Dla wcześniejszych wersji PMA spróbuj pochodne tego systemu np. latin7_bin, latin2_general_ci etc.

To by było na tyle. Prawda, że proste? W Internecie możesz znaleźć wiele bardzo skomplikowanych sposobów. Myślę, że te trzy kroki są najprostsze.
Jeszcze tylko mała adnotacja do programu: Został on stworzony do konwertowania napisów z baz przerzucanych na nowszy PMA.

Zgłoś swój pomysł na artykuł

Więcej w tym dziale Zobacz wszystkie

Ważne: Użytkowanie Witryny oznacza zgodę na wykorzystywanie plików cookie. Szczegółowe informacje w Polityce prywatności.