To jest tylko wersja do druku, aby zobaczyć pełną wersję tematu, kliknij TUTAJ
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo

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 :
Kod:
SET NAMES utf8;

dobrym pomysłem jest, aby na końcu kodu :
Kod:
CREATE TABALE...

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.



Powered by phpBB modified by Przemo © 2003 phpBB Group