Archiwum działu Ogólne (posty do 12.2007) - [Problem] Przeniesienie bazy z ISO-8859-2 (latin2) na UTF-8
bryzas - 07-09-2007, 12:04 Temat postu: [Problem] Przeniesienie bazy z ISO-8859-2 (latin2) na UTF-8 Witam serdecznie,
Opiszę sposób w jaki udało mi się przenieść forum z latin2 na utf-8.
MySQL + Apache + phpMyAdmin
stary serwer :
MySQL 4.0.20, phpMyAdmin - 2.9.1.1
MySQL (show variables) :
Kod: | character_setl latin2
character_sets latin1 big5 czech euc_kr gb2312 gbk latin1_de sjis tis620 ujis dec8 dos german1 hp8 koi8_ru latin2 swe7 usa7 cp1251 danish hebrew win1251 estonia hungarian koi8_ukr win1251ukr greek win1250 croat cp1257 latin5 |
nowy serwer :
MySQL 5.0.37, phpMyAdmin - 2.9.1.1
MySQL (show variables) :
Kod: | character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_results utf8
character_set_server utf8
character_set_system utf8
character_sets _dir /usr/share/mysql/charsets/
collation_connection utf8_general_ci
collation_database utf8_general_ci
collation_server utf8_general_ci |
A by tak skonfigurować serwer MySQL należy :
w pliku my.cnf :
Kod: | [client]
default-character-set=utf8
[mysqld]
default-character-set=utf8
init-connect='SET NAMES utf8'
collation_server=utf8_general_ci
character_set_server=utf8 |
dodatkowo MySQL powinien być uruchamiany z parametrem :
Kod: | --character-set-server=utf8 --collation-server=utf8_general_ci |
Dotatkowo w php.ini należy ustawić :
Kod: | default_charset = "UTF-8" |
oraz w httpd.conf :
Kod: | AddDefaultCharset UTF-8 |
A teraz trochę praktyki:
1. robimy export bazy w phpmyadmin na starym serwerze,
2. robimy konwersję znaków w pliku kopii bazy (polecam program "Gżegżółka XP") z iso-8859-2 na UTF-8
3. edytujemy przekonwertowany plik kopii bazy i na początku wpisujemy :
dobrym pomysłem jest, aby na końcu kodu :
dopisać : Kod: | DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci | (tak dla pewności )
4. Robimy import na nowym serwerze poprzez phpmyadmin.
5. w pliku /forum/db/mysql4.php znajdz linię :
Kod: | $dbselect = mysql_select_db($this->dbname); |
i pod nią wpisz :
Kod: | mysql_query('SET NAMES utf8', $this->db_connect_id); |
6. w pliku Kod: | /forum/language/lang_polish/lang_main.php | należy zmienić z:
Kod: | @setlocale (LC_ALL, 'pl_PL.iso-8859-2', 'pl_PL.latin2', 'pl_PL', 'pl', 'polish');
$lang['ENCODING'] = 'iso-8859-2'; |
na :
Kod: | @setlocale (LC_ALL, 'pl_PL.UTF-8', 'pl_PL.UTF-8', 'pl_PL', 'pl', 'polish');
$lang['ENCODING'] = 'utf-8'; |
7. Na koniec proponuję przekonwertować na UTF-8 programem "Gżegżółka XP" wszystkie pliki *.php, *.html, *.txt z katalogu /forum
Pozdrawiam.
|
|
|