MySQL:在表中插入带重音或ñ的数据时加密的Word

时间:2012-08-25 21:29:57

标签: php mysql utf-8

我使用一个简单的Insert在mysql表中保存用户注册的数据(带重音词,ñ),但是当我在本地工作中使用这个脚本没有问题但是当我在主机中使用时,保存为If加密我不明白。

PHP

$query = "INSERT INTO usuarios 
    (user, password, name, lastname, phone, email)
        VALUES ('$user','$pass','$name','$lname','$phone','$email')";

$result = mysql_query($query) or die (mysql_error());

与DataBase的连接

require_once 'config.php';
    //connecting to mysql
    $con = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD);
    //selecting database
    mysql_select_db(DB_DATABASE);
    mysql_query('SET names=utf8');  
    return $con;
}

我的表和数据库有utf8,我的HTML表格中有

<meta charset="utf-8">

例如,如果我插入这些数据:

$user = 'soldier';
$pass = '1234';
$name = 'Edgar';
$lname = 'Ramírez';
$phone = '234234';
$email = 'soldier@mail.com';

这是存储在表格中的结果:

Table: Users

user    |    password    |    name    |       lastname       | phone  | email
________________________________________________________________________________________
soldier       1234            Edgar      52616dc383c2ad72657a   234234  soldier@mail.com

这种情况一直发生,如果一个单词有ñ或重音,就会在表格中插入:/

我希望我已经解释过了!

1 个答案:

答案 0 :(得分:0)

您应该检查创建输出的方式。给定的文本只是“十六进制编码”。请参阅以下代码:

$text = '52616dc383c2ad72657a';
for ($l = strlen($text), $i = 0; $i < $l; ++$i) {
  echo chr(hexdec(substr($text, $i * 2, 2)));
}

结果是Ramírez。 “损坏”字符只是UTF-8的ASCII表示。

所以你的代码很好,只是你用来检查表格内容的工具显示十六进制而不是UTF-8的字符串表示。