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
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 ạ.
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> </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 ạ.
Bài liên quan
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 !
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
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ứ.