0

我使用简单的插入将用户注册的数据(带重音符号的单词)保存在 mysql 表中,但是当我在本地工作中使用此脚本时没有问题,但是当我在主机中使用时,保存为如果加密并且我不不明白。

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());

与数据库的连接

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 FORM 中我有

<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

这一直发生,如果一个词有ñ或重音,以这种方式插入表中:/

我希望我已经解释了!

4

1 回答 1

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 显示字符串表示。

于 2012-08-25T21:43:33.313 回答