2013-02-20 71 views
6

Tôi đã có biểu mẫu đăng ký sẽ chèn vào bảng thành viên, đối chiếu ở số utf8_general_ci và tôi sử dụng SET NAMES utf8 trong tập lệnh php, OK đây là vấn đề, tôi không thể chèn chuỗi khác bảng chữ cái, tôi thử nhập 'Hélène' vào một trường biểu mẫu, sau khi chạy truy vấn sql, tôi kiểm tra với bảng db của tôi, trường được chèn là 'H', phần còn lại của bảng chữ cái không thể chèn bất cứ khi nào chuỗi đi kèm với bảng chữ cái đặc biệt chẳng hạn như é, ř ở phía sau.MySQL Chèn ký tự đặc biệt

Ai đó có thể giúp bạn không? cảm ơn.

SOLUTION:

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

mysql_query("SET NAMES utf8"); 

trên hai dòng là một phần rất quan trọng để chấp nhận đầu vào cơ sở dữ liệu và đầu ra trên trang web.

Cảm ơn mọi người đã được tư vấn.

+3

Đọc về mã hóa và xử lý của chúng trong hai văn bản tuyệt vời này và bạn chắc chắn sẽ tìm thấy sự cố: http://kunststube.net/frontback/ và http://kunststube.net/encoding/. –

+0

Mã hóa bảng DB là gì? Đảm bảo nó cũng là utf-8. Ngoài ra, hãy kiểm tra xem tập lệnh của bạn có nhận đúng chuỗi không. Echo dữ liệu biểu mẫu trước khi chèn nó vào DB. (Sau khi xác nhận.) –

+0

Look giải pháp ở đây [TÊN SET utf8 trong MySQL?] [1] [1]: http://stackoverflow.com/questions/2159434/set-names-utf8-in- mysql – sanj

Trả lời

1

Hãy chắc chắn rằng bạn tạo cơ sở dữ liệu của bạn với utf8 mã hóa

CREATE SCHEMA `youdatabasename` DEFAULT CHARACTER SET utf8; 
+0

Nó không phải là một câu trả lời. –

+0

ồ, đó là những gì tôi sử dụng để đảm bảo rằng tôi không gặp rắc rối với mã hóa :) phải là một bình luận thay thế? –

+0

điều này là không đủ để chắc chắn. –

2

cố gắng để chèn dữ liệu sau khi mã hóa. hãy thử mysql_real_escape_string() để mã hóa. sau đó thực thi truy vấn chèn.

EDIT: -

Câu trả lời này đã được đăng cách đây một năm. Bây giờ mysql_real_escape_string() cho php 5 sẽ hoạt động trong mysqli :: real_escape_string định dạng này. Vui lòng kiểm tra here

1

Và nếu bạn không muốn lo lắng về quá nhiều mã ký tự khác nhau hoặc nếu htmlentities không hoạt động cho bạn, hãy thay thế: Tôi đã sử dụng kết nối DB mysqli (và PHPV5)/chèn vào MySQl DB.

$Notes = $_POST['Notes']; //can be text input or textarea. 

$charset = mysqli_character_set_name($link); //only works for mysqli DB connection 
printf ("To check your character set but not necessary %s\n",$charset); 

$Notes = str_replace('"', '&quot;', $Notes); //double quotes for mailto: emails. 
$von = array("ä","ö","ü","ß","Ä","Ö","Ü"," ","é"); //to correct double whitepaces as well 
$zu = array("&auml;","&ouml;","&uuml;","&szlig;","&Auml;","&Ouml;","&Uuml;","&nbsp;","&#233;"); 
$Notes = str_replace($von, $zu, $Notes); 
echo " Notes:".$Notes."<br>" ; 
$Notes = mysqli_real_escape_string($link, $Notes); //for recommended mysqli DB connection. 
//$Notes = mysql_real_escape_string($Notes); //for old deprecated mysql DB connection. 

// mysqli_real_escape_string Escapes special characters in a string for use in an SQL statement 

echo " Notes:".$Notes ; //ready for inserting 
+0

Khi hiển thị nội dung: Và dòng này trong tiêu đề nếu các ký tự vui xuất hiện. KarlosFontana

+0

'mysqli_real_escape_string' không nên được sử dụng khi có hệ thống trình giữ chỗ hoàn toàn tốt ở đó. – tadman

Các vấn đề liên quan