Translate website from TIS-620 to UTF-8

Translate database

ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_general_ci;
SHOW TABLES;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

Translate php file by shell script

#!/bin/bash
FROM=TIS-620
TO=UTF-8
ICONV="iconv -f $FROM -t $TO//IGNORE"

find /var/www/website -type f -name "*.php" | while read fn; do
 cp ${fn} ${fn}.bak
 $ICONV < ${fn}.bak > ${fn}
 rm ${fn}.bak
done

find and replace in Terminal

find /var/www/website -type f -name "*.php" -exec sed -i 's/TIS-620/UTF-8/g' {} \; 
find /var/www/website -type f -name "*.php" -exec sed -i 's/TIS620/UTF8/g' {} \;
find /var/www/website -type f -name "*.php" -exec sed -i 's/windows-874/UTF-8/g' {} \;

use mb_ in php string function

first setup default in php.ini

mb_internal_encoding = "UTF-8"
find /var/www/website -type f -name "*.php" -exec sed -i 's/strlen/mb_strlen/g' {} \;
find /var/www/website -type f -name "*.php" -exec sed -i 's/strpos/mb_strpos/g' {} \;
find /var/www/website -type f -name "*.php" -exec sed -i 's/substr/mb_substr/g' {} \;
find /var/www/website -type f -name "*.php" -exec sed -i 's/strtolower/mb_strtolower/g' {} \;
find /var/www/website -type f -name "*.php" -exec sed -i 's/ereg/mb_ereg/g' {} \;

Reference:

http://stackoverflow.com/questions/6115612/how-to-convert-an-entire-mysql-database-characterset-and-collation-to-utf-8
https://github.com/EllisLab/CodeIgniter/issues/261
http://www.thaiseoboard.com/index.php/topic,315829.0.html

ใส่ความเห็น