2013/12/30

MySQL: Latin1 convert to UTF8

Олон жилийн өмнө үүсгэж байсан датабэйсүүд ихэвчлэн Latin1 үсгэн кодчилолтой байх нь элбэг. Үнийг орчин цагт хөрвүүлж, нийтлэг хэрэглэгддэг unicode руу хөрвүүлэх асуудал, бэрхшээлүүд бишгүй гардаг.

http://www.badral.net/?p=127 Бадрал ахын блогт линукс шелл командаар баазыг хөрвүүлэх команд байсан ч виндовс дээр хөвүүлэхэд асуудал гарав.

# mysqldump -u dbuser -pdbpass --opt --skip-set-charset --default-character-set=latin1 --skip-extended-insert databasename > database.sql
# sed -i 's/DEFAULT CHARSET=latin1/DEFAULT CHARSET=utf8/g' database.sql // эсвэл perl -i -pe 's/DEFAULT CHARSET=latin1/DEFAULT CHARSET=utf8/' database.sql гэсэн ч болно.
# sed -i '1i SET NAMES utf8;' database.sql // эсвэл ямар нэг засварлагчаар vi database.sql гэдэг ч юм уу нээгээд толгойд нь "SET NAMES utf8;" гэсэн мөр нэмнэ.
# cat database.sql | mysql -u dbuser -pdbpass

MySQL датабэйсийхээ charset-г utf8 болгож өөрчилснийхөө дараа дараах query-г ажиллуулж Unicode руу хөрвүүлж авав.

UPDATE content SET title = CONVERT(CAST(CONVERT(title USING latin1) AS BINARY) USING utf8);

1 comment:

Миний бичсэн бичлэг танд өчүүхэн ч болтугай хэрэг болсон бол сэтгэгдлээ бичиж үлдээхийг хүсье. Баярлалаа :)