09/10/2018, 18:05

utf-8 trong MySQL và PHP

Các bạn. Tui đã thử sài utf-8 trong MySQL nhưng sao không được. Đây là một đoạn mã guestbook ngắn của tui. Xin ý kiến



Code:
 

index.php

---------------------

<?php echo header("Content-type: text/html; charset=UTF-8"); ?>

<html>

<head>

</head>

<body>

<form method="POST" action="add.php">

<table width="550" border="0" cellspacing="2" cellpadding="2">

<tr>

<td width="17%"><b>Title</b>:</td>

<td width="83%"><input type="text" name="title" size="20"></td>

</tr>

<tr>

<td width="17%"><b>Your name</b>:</td>

<td width="83%"><input type="text" name="author" size="20"></td>

</tr>

<tr>

<td><b>Message</b>:</td>

<td><textarea name="message" cols="50" rows="5"></textarea></td>

</tr>

<tr>

<td>&nbsp;</td>

<td><input type="submit" value="Submit" name="Add"></td>

</tr>

</table>

</form>

</body>

 

 

 

add.php

-------------------

<?php

echo header("Content-type: text/html; charset=UTF-8");

mysql_connect("localhost", "root", "");

@mysql_select_db("guestbook") or die("Unable to select the database");

if($_POST['author'] != "" && $_POST['title'] != "" && $_POST['message'] != "") {

     $author = utf8_encode($_POST['author']);

     $title = utf8_encode($_POST['title']);

     $email = utf8_encode($_POST['email']);

     $message = utf8_encode($_POST['message']);

     $query = "INSERT INTO guestbook

             (Guestbook_Title, Guestbook_Author, Guestbook_Message)

             VALUES ('$title', '$author', '$message')";

     mysql_query($query);

} else {

    echo "<h2>You did not input name or comment!!</h2>";

}

mysql_close();

?>

 

view.php

---------------------

<?php echo header("Content-type: text/html; charset=UTF-8"); ?>

<html>

<head>

<meta http-equiv=Content-Type content="text/html; charset=utf-8">

</head>

<body>

<?php

 

mysql_connect("localhost", "root", "");

mysql_select_db("guestbook") or die ("Unable to select the database");

$query = "SELECT guestbook_Title, guestbook_author, guestbook_message

            FROM guestbook";

$result = mysql_query($query);

while($row = mysql_fetch_array($result)) {

        echo "<br>From <b><a href=mailto:>"

. $row['guestbook_author'] . "</a></b> on " . $row['guestbook_Title'] . "<br><i>"

. $row['guestbook_message'] . "</i><br><hr size=4 width=260><br>";

}

mysql_close();

?>

</body>

</html>


Tui đã alter tất các các trường database là UTF8 hết.


Gõ tiếng việt gửi lên. Dùng View.php để xem thì toàn tiếng Miến không ạ.
dtt_vn viết 20:08 ngày 09/10/2018
Bạn không cần dùng hàm utf8 encode làm gì. Tôi đây đã từng viết một số website bằng PHP và nhận thấy, không cần dùng hàm đó làm gì. Mysql có thể phân biệt tốt. Thử bỏ ra mà xem
numen viết 20:05 ngày 09/10/2018
Đúng là như vậy. Nhưng đó là trường hợp dùng latin1 cho CHARACTER SET của char, varchar, text trong MySQL.
Tui cũng bị trường hợp như trên khi dùng tính năng mã hóa UTF8, collation là utf8_general_ci từ phiên bản MySQL4.1 trở lên.

Ai đã dùng UTF8 mã hóa dữ liệu text trong MySQL chỉ dùm với. Cái sai của nó chính là ở đây. Nếu tui dùng Latin1 mã hóa dữ liệu text MySQL thì mọi việc lại OK. Nó sai chỗ nào nhỉ.

Help me !
vantri_it viết 20:09 ngày 09/10/2018
Chao ban;
Tôi xin trả lời giưp bạn;
Để hiển thị được Utf8 trên trình duyệt Web một cách mặt định bạn vào file PHP.INI trong thư mục Window, sau đó tìm đến ";default_charset = "utf-8"" sau đó bỏ dấu ";" đằng trước tếp thêo lưu và reset lại apache hoặc IIS của bạn thế là song. Chúc bạn thành công
Bye
numen viết 20:19 ngày 09/10/2018
Cám ơn bạn. Nhưng đưa lên host thì làm sao đây. Bạn có các configuration ít phục thuộc vào hệ thống nhất không.

Xin hỏi ai đã dùng charset UTF8 trong mySQL với các trường varchar và text chưa. Xin cho ý kiến. Tui nghĩ tính năng mới này trong bản mySQL4.1 trở đì phải đóng một vai trò nhất định nào đó chứ.
Bài liên quan
0