Friday, March 28, 2008

Ruby MySQL i UTF8

Najprostszy sposób na ustawienie MySQL do pracy w UTF-8, to modyfikacja pliku my.cnf. Plik ten znajduje się w katalogu /etc/mysql/my.cnf. W pliku tym w sekcji zmodyfikować 2 sekcje [mysqld] oraz [client]:

[mysqld]
character-set-server = UTF8
default-character-set = UTF8
collation_server = utf8_polish_ci

[client]
default-character-set=utf8

Następnie aby ruby poprawnie radził sobie z zapisem do tak stworzonej bazy należy zmodyfikować plik environment.rb znajdujący się w podkatalogu /config/. Do pliku tego dodajemy następujący wpis:

config.action_controller.default_charset = "utf-8"

Jeżeli tworzyliśmy projekt za pomocą rails -d mysql nazwa_projektu automatycznie w pliku konfigurującym połączenie z baza danych powinniśmy otrzymać podobny zestaw wpisów:

development:
adapter: mysql
encoding: utf8
database: projekt_development
username: root
password:
socket: /var/run/mysqld/mysqld.sock

/Podobmne wpisy będą wygenerowane również dla środowiska test oraz production/


Uwaga: jeżeli pomimo wprowadzenia zmian opisanych powyżej nasza baza danych dalej błędnie obsługuje polskie znaki dialektyczne, najprostszym sposobem aby sobie z tym poradzić jest usunąć wszystkie tabele i stworzyć je na nowo /rake db:create:all oraz rake migrate/.

1 comment:

Anonymous said...

przydało sie dzieki