2014-10-10 145 views
0

当我从表单中将数据输入到sql数据库时,下面的代码有时仍然没有正确地包含特殊字符。PHP特殊字符

$titel = mysql_real_escape_string($_POST['titel']); 

我不知道什么可以....

一个例子

Assassin’s Creed Unity – 

相同的字符有时做的工作......

Destiny's Raids 

一些更例子....

Hyrule Warriors ‘Cia’ gameplay<br> 
Dragon Age: Inquisition Gameplay Features – Crafting &am<br> 
NBA 2K15 – Welcome To MyPARK<br> 
Sid Meier’s Civilization: Beyond Earth â€&ldq 

任何提示?

+2

你尝试集名称为UTF-8 – 2014-10-10 06:38:35

+2

一般来说,你应该想想动像库MySQLi或PDO更现代的数据库适配器,其在内部进行这种转义,并且比基于这种手动转义功能的旧式方法更可靠。开始阅读关于“准备好的陈述”! – arkascha 2014-10-10 06:40:54

+1

您似乎在以UTF-8插入/获取信息,但在ISO-8859-1中显示。以及@arkascha所说的:使用预先准备的语句。确保你的系统的所有部分都使用UTF-8,你应该没问题。 – 2014-10-10 06:42:47

回答

0

执行此操作的指导方针进行工作UTF8解决方案:

  1. 使用SET NAMES 'utf-8' 打开你的数据库连接时,例如:

$bd = mysql_connect(BD_SERVER, BD_USER, BD_PASSWORD); 

mysql_select_db(BD_DATABASE, $bd); 

mysql_query("SET NAMES 'utf8'", $bd); 

  1. 使用utf8_general_ci作为您的数据库排序规则。

  2. 用UTF-8编码保存你的PHP文件。

  3. 把你的网页下一个元的标题:<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />