Helpful Information
 
 
Category: Programming Articles
Another easy way to convert database from Latin1 to UTF8

I tried another way by searching some articles on vbulletin but it takes me long time, many steps, and not success... I found another way to do. I hope that my experiment can help someone is running a vbulletin for a long time with latin1, and now he want to convert to utf8.

After trying by myself offline some ways to convert database from latin1 to utf8, I see that there is a simple way: less steps and really easy, and no need special tool: iconv-chunk (if the database file is too big), uconv (database tools)...

First of all. Turn off your vbulletin board. And turn off httpd/apache service to dedicate all resources for database converting.


Next step: change mysql database server configuration.

Because the default of mysql database server is running at latin1 charset. So we need to change it to UTF8 by modify my.cnf and input more settings:

default-character-set = utf8

[client]

default-character-set = utf8


After modified, restart mysql server for the changing affect...

Next step: dump the old database to file.

mysqldump -u dbuser -p --opt --skip-set-charset --default-character-set=latin1 database > yourboard.sql

(this command will ask you type the db's password)

Next step: change charset from latin1 to utf8 in your dump file.

perl -i -pe 's/DEFAULT CHARSET=latin1/DEFAULT CHARSET=utf8' yourboard.sql

Next step: keep the old database for rescure if you do something wrong... create new database with charset utf8.

mysql --user=dbuser -p --execute="CREATE DATABASE new_database_name CHARACTER SET utf8 COLLATE utf8_general_ci;"

(this command will ask you type the db's password too)

Next step: import to new database.

mysql -u dbuser -p new_database_name < yourboard.sql

Last step: Modify config.php.

Modify the new database to connect to in config.php.

And if you are using mysqli, go to the bottom of your config, you will see one line to un-comment.

That's all. I did by myself for my board with more than 100.000 members and 1.000.000 posts.

Goodluck! And remember that you should keep the original database for rescure if you do something wrong.

Quynh H Nguyen

I'll try it for my forum too. Thanks.

What about the language encoding setting in vBulletin ? Did you change that too?

P.S.

I think you forgot the third slash here:
perl -i -pe 's/DEFAULT CHARSET=latin1/DEFAULT CHARSET=utf8' yourboard.sql

As it gives the error..
Substitution replacement not terminated at -e line 1.

Therefore the right line would be:
perl -i -pe 's/DEFAULT CHARSET=latin1/DEFAULT CHARSET=utf8/' yourboard.sql

Am I on the right track here? Or completely off?

Ηello...

I have the same problem but I have my own server and I can not make this change. There are other ways;;










privacy (GDPR)