MySQL的。将UTF-8字符插入数据库

时间:2013-05-10 14:21:14

标签: mysql database encoding utf-8 character-encoding

我需要将用户名从Facebook添加到数据库,这些名称包含UTF-8字符,如(ą,č,,,ė,į,š,ų,ū)。当我将它添加到数据库时,例如字母š看起来像Å¡

在myPhpAdmin中,我发现表设置为UTF-8编码,我这样做但是同样的问题。 我在代码中添加了mysql_set_charset('utf8');,但这也没有帮助。代码现在看起来像:

<?php 
    $time = $_POST['time'];
    $username = $_POST['userName'];

    session_start();
    $name = $_SESSION['vardas']; 
    $times = gmdate('H:m:s', $time);

    mysql_set_charset('utf8');
    $mysqli = new mysqli("localhost","my_db","pass","my_db");
if ($stmt = $mysqli->prepare("INSERT into eurokos (time, userName) VALUE (?,?) ")) {

$stmt->bind_param('is', $time, $name);
  // $stmt->bind_param("s", $username);

   $stmt->execute();

   if ($stmt->error != '') {
       echo ' error:'.$stmt->error;
   } else {
       echo 'success';
   }
   $stmt->close();
} else {
   echo 'error:'.$mysqli->error;
}

此php文件也转换为UTF-8编码,但不会有帮助。

当我使用此代码时echo "Name: " . $user_profile['name']; Facebook正确打印UTF-8中普通字母的用户名。所以问题在于将用户名插入数据库。

这用我将用户名变量从fb.php发送到db.php(也许这里我需要使用任何编码?)

$name = $user_profile['name'];
session_start();
$_SESSION['vardas'] = $name;
你可以帮帮我吗?感谢。

1 个答案:

答案 0 :(得分:1)

这解决了我的问题:

if (!$mysqli->set_charset("utf8")) {
    printf("Error loading character set utf8: %s\n", $mysqli->error);
} else {
    printf("Current character set: %s\n", $mysqli->character_set_name());
}