Chuyển đổi từ LATIN thành UTF-8 trong MySQL

Chắc trong lúc lập trình bạn sẽ thấy sử dụng nhiều utf-8, bạn đang sử dụng latin, vậy bạn muốn nó thành utff-8, hãy đọc bài này nhé

Ta xét ví dụ ở code latin1:

CREATE DATABASE `latindatabase` DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci;
CREATE TABLE `article` (
`id` INT NOT NULL AUTO_INCREMENT ,
`title` VARCHAR( 255 ) NOT NULL ,
`content` TEXT NOT NULL ,
PRIMARY KEY ( `id` )
)

Để tiết kiệm thời gian ta xem code vừa xem trang, vừa thêm luôn

File config.php để kết nối vơi CSDL

 dbconnect.php
File index.php
".$row['id']." - ".$row['title']."";
	echo $row['content']."

";
}
?>
Title: Content:

Và đây là kết quả xem trên Firefox

Có vẻ nó cũng khá “ngon lành” khi hiển thị, nhưng vấn đề ở chỗ thông tin được lưu trong database như sau:

Thông tin latin1 trong DATABASEThông tin latin1 trong CSDL

Theo một cách hiểu đơn giản nhất là : khỏi đọc được

Vấn đề ở đây là với cách lưu trữ như vậy sẽ gây khó khăn cho quá trình tìm kiếm trong database (tại sao bạn sẽ gặp ở một ví dụ khác tôi sẽ post sau). Sau đây ta tiếp tục với một database hoàn toàn Unicode.

CREATE DATABASE `unicodedatabase` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE TABLE `article` (
`id` INT NOT NULL AUTO_INCREMENT ,
`title` VARCHAR( 255 ) NOT NULL ,
`content` TEXT NOT NULL ,
PRIMARY KEY ( `id` )

Hệ thống file kết nối lúc này có đôi chút khác biệt:

config.php


dbconnect.php


index.php

".$row['id']." - ".$row['title']."";
	echo $row['content']."

";
}
?>
Title: Content:

Không có nhiều sự khác biệt cho lắm nên bạn tự nghiên cứu thử nó khác biệt thế nào nhé :)

Kết quả trong firefox vẫn không thay đổi:

Điều khác biệt là thông tin được lưu trong database

Thông tin UTF-8 được lưu trong databaseThông tin UTF-8 được lưu trong database

Rồi ! Đó là sự khác biệt lớn và chúng ta mặc định là đều hiểu nó có lợi cho việc hiển thị, lưu trữ và tìm kiếm đối với tiếng Việt. Tuy nhiên, vấn đề cần bàn nhất là làm thế nào để chuyển đổi một database từ latin1 sang UTF-8 để khắc khục các nhược điểm. Đây là cách:

File config.php


File dbconnect.php


File config2.php


dbconnect2.php


Và cuối cùng là file convert.php


Convert finished!

Kết quả cuối cùng:

convert latin1 to UTF-8 

FOLLOW US

Leave a Reply

Your email address will not be published. Required fields are marked *