2013-02-20 154 views
6

我有一个注册表格,它将插入到一个成员表中,排序规则在utf8_general_ci,我在php脚本中使用SET NAMES utf8,这里是问题,我不能插入除纯字母表,我尝试在表单字段中输入'Hélène',在sql查询运行后,我使用db表检查字段被插入为'H',字符串的其余部分无法插入,只要字符串带有特殊字母如é, ř就在后面。MySQL插入特殊字符

有人可以帮忙吗?谢谢。

SOLUTION:

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

mysql_query("SET NAMES utf8"); 

上述两个线是关键的部分接受在网页上输入到数据库和输出。

谢谢大家的建议。

+3

阅读有关编码以及它们在这两个伟大的文本处理,你一定会发现问题:http://kunststube.net/frontback/和http://kunststube.net/encoding/。 – 2013-02-20 09:57:49

+0

数据库表的编码是什么?确保它也是utf-8。同时检查你的脚本是否收到正确的字符串在将表单数据插入到数据库之前回显表单数据。 (后验证。)这里 – 2013-02-20 10:01:58

+0

查找方案在MySQL SET NAMES UTF8?] [1] [1]:http://stackoverflow.com/questions/2159434/set-names-utf8-in- mysql – sanj 2013-02-20 10:04:40

回答

1

确保您与编码UTF8创建数据库

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

以来,参数的顺序已经颠倒了,这不是一个答案。 – 2013-02-20 10:03:47

+0

哦,这是我用它来确保我不会遇到编码:)应该是一个评论呢? – 2013-02-20 10:06:57

+0

这是不够的,以确保。 – 2013-02-20 10:11:00

2

尝试编码后插入数据。尝试mysql_real_escape_string()进行编码。然后执行插入查询。

编辑: -

这个答案被张贴在一年前。现在mysql_real_escape_string() for php 5将工作于mysqli :: real_escape_string这种格式。请here

1

如果你不想担心这么多不同的字符集值编码,或者ヶ辆不适合你的工作,这里的选择: 我用mysqli的数据库连接(和PHPV5)表单POST写作/插入到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

显示内容时:如果出现有趣的字符,则在标题中显示此行 KarlosFontana 2014-01-03 21:45:55

+0

'mysqli_real_escape_string' should not be在那里有一个完美的占位符系统时使用。 – tadman 2014-04-10 04:44:01