2013-05-10 4 views
-1

Мне нужно добавить имена пользователей из Facebook в базу данных, и эти имена имеют символы UTF-8, такие как (±, č, ę, é, į, š, ø, ū). Когда я добавляю его в базу данных, например, письмо š выглядит как Å¡MySQL. Вставьте символы 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; 

Не могли бы вы мне помочь? Благодарю.

+0

возможно дубликат [UTF-8 - PHP и MySQLi UTF8] (http://stackoverflow.com/questions/10331883/utf-8-php-and-mysqli- utf8) – deceze

+0

'mysql_set_charset' применим, если вы используете расширение * mysql *; вы используете * mysqli * и должны использовать соответствующий способ mysqli для настройки кодировки соединения. – deceze

+0

У меня возникла ошибка: «Неустранимая ошибка: вызов функции-члена set_charset() для не-объекта ...» при использовании этого: '$ mysqli-> set_charset (« utf8 »);' – 2013-05-10 15:41:48

ответ

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()); 
} 
Смежные вопросы