2012-02-23 2 views
3

У меня возникла проблема с вставкой слов со специальными символами в мою базу данных. Слово кажется усеченным у специального персонажа.Условные вставки специальных символов PHP/Mysql

Я использую MySQL 5.1.41, сортировка в моей базе данных - utf8_general_ci. Я использую PDO для облегчения взаимодействия с базами данных.

Вот пример того, что я делаю.

//$db is a PDO object 
$db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'"); 
//word with a special character 
$word = "pépite"; 
$sql = "INSERT INTO keyword(key_name) VALUES(?)"; 
$stmt = $db->prepare($sql); 
$stmt->execute(array($word)); 

Когда выполняется я просто получить «р» в моей базе данных, это кажется é характер и все после того, как он обрезается. Я не уверен, что я делаю неправильно здесь. Если бы кто-нибудь мог предположить, что я делаю неправильно, это было бы очень оценено. Благодаря!

+0

Возможно, вы используете клиент mysqli для PHP вместо 'mysql'? – Treffynnon

+0

Разве это просто отрезать его на один символ каждый раз или просто хранить все до специального персонажа? – MetalFrog

+1

Какова структура вашей таблицы? – MMM

ответ

7

Попробуйте

$db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'"); 
$word = utf8_encode('pépite'); 
$sql = "INSERT INTO keyword(key_name) VALUES(?)"; 
$stmt = $db->prepare($sql); 
$stmt->execute(array($word)); 

utf8_encode | utf8_decode

+0

Да, это очень понравилось. Не могли бы вы рассказать мне, почему мне нужно было кодировать как utf8, не была ли уже строка utf8? – TheMethod

+1

Нет, вам нужно закодировать специальные символы, такие как ... с этой функцией. Я из Аргентины (мой родной язык это испанский), поэтому у меня эта проблема всегда :) Например, é = Ã © в UTF8. – Juanma

Смежные вопросы