无法在数据库mysql php中插入法语字符串

时间:2013-05-16 08:01:01

标签: php mysql

当我添加文字时,我有输入文字的表格  Un sac à main de femme recèlerait une quantité importante de bactéries

它仅在数据库中添加Un sac

我已尝试使用addslashes,mysql_real_escape_string,htmlspecialchars等也使用UTF-8编码,但仍无法插入整个字符串

8 个答案:

答案 0 :(得分:2)

您应该使用utf8_unicode_ci作为列排序规则,以便在其中添加法语字符串。

答案 1 :(得分:2)

为了在数据库中存储非美国字符串,您必须确保正确实现以下3个步骤:

  1. 您必须将数据库表设置为与法语兼容的字符集。为了将来证明,我建议使用UTF-8创建表。有关详细信息,请参阅MySQL documentation
  2. 在存储和查询时,必须将数据库连接设置为正确的字符集。为此,请使用mysqli_set_charset()(或MySQL连接器提供的任何内容)。
  3. 您的输入表单和您的查看页面必须以确切的字符集作为您的数据。为此,您需要设置以下标题:header('Content-Type: text/html; charset=UTF-8');(如果您使用的是其他字符集,请相应更改。)
  4. 您当然可以使用不同的字符集进行存储和表示,但为什么要这样做呢?

    此外,在使用数据库和HTML时,您应该考虑:

    1. 进入数据库时,始终逃避您的数据。使用mysqli_real_escape_string()或数据库连接器提供的任何转义方法。另外,不要使用SET NAMES UTF8设置连接字符集,否则连接器库将不知道用于转义的字符集。有关详细信息google "sql injection"
    2. 始终转义,因为它转换为HTML htmlspecialchars()。另外要注意总是提供正确的字符集。有关详细信息google "xss"

答案 2 :(得分:1)

有同样的问题。输入文本来自ANSII文件,因此它不是UTF8,尽管我的所有utf8设置都是如此。 utf8_encode(input_text)解决了它。

答案 3 :(得分:1)

在连续两天打破我的头脑并阅读所有可能的答案后,解决问题的原因是允许我插入其他奇怪的字符,如em dash等,并检索数据而不会看到奇怪的字符。

  

这是完整的逐步设置。

db列的排序规则必须为:utf8_general_ci

类型为:varchar(250)

enter image description here

在PHP标头中将默认客户端字符集设置为UTF8

mysql_set_charset("UTF8", $link);

设置字符集结果,以便我们显示法语字符

$sql = "SET character_set_results=utf8";
$result = mysql_query($sql);

在html标题中指定,以便您可以查看法语字符:

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

插入数据时请勿使用utf8_decode,只需以下方法即可正常使用

$query = 'insert into tbl (col) VALUES ("'.mysql_real_escape_string($variable).'");

使用普通查询来检索数据,例如查询:

$query = "select * from table;";

最后解决了这个问题,希望这对其他人有所帮助。

答案 4 :(得分:0)

在php中:

header ('Content-type: text/html; charset=utf-8');

连接后:

mysql_set_charset("utf8");

答案 5 :(得分:0)

为了跟进这一点,我正在使用dbForge Studio,只是粘贴法语文本,我正确地设置了所有的排序/编码。我没有设置的一件事是与db连接的实际编码。将其设置为UTF8,一切都很好。 @Janoszen答案中排名第2。

答案 6 :(得分:-1)

我试过了

  

ヶ辆()

。 .it将字符串保存在数据库中

答案 7 :(得分:-1)

您应该尝试在mysql中插入特殊字符:

$con = mysql_connect($server,$uname,$pass);
$res = mysql_select_db($database,$con)

mysql_set_charset("letin1", $con);