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フォームには

<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

出力の作成方法を確認する必要があります。与えられたテキストは単に「16進コード化」されています。次のコードを参照してください。

$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ではなく16進数で文字列表現が表示されます。

于 2012-08-25T21:43:33.313 に答える