2012-04-25 2 views
0

pdo를 사용하여 mysql db에 데이터를 삽입하는 PHP 파일이 있습니다. 내 테이블 중 하나에있는 필드에 référencé이라는 단어를 삽입하려고하면, mysql과 같이 표시됩니다. référencé
utf-8로 문자셋을 조금이라도 지정 했으므로이 옵션을 사용할 수 없습니다. 아래를 참조하십시오.PHP MySQL - 고려하지 않는 문자 집합

  1. 내 테이블이 InnoDB의 UTF-8 내 필드가 내 PHP 스크립트의 상단에
  2. 을 utf8_general_ci로 설정되어
  3. 로 설정되어 나는
    넣으면된다. header('Content-Type: text/html; charset=utf-8');
    b. mysql_set_charset('utf8');
    c. 내 PDO의 접속 기능 아래 다음 mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");

:

function connexion($host, $user, $pass, $db){ 
    $db_host = $host; 
    $db_user = $user; 
    $db_password = $pass; 
    $db_database = $db;    
    return $connexion = new PDO("mysql:host=$db_host;dbname=$db_database", $db_user, $db_password); 
} 

희망 누군가가 나를 이해하는 데 도움이 될 수 있습니다. 미리 감사드립니다. 건배. Marc

+0

PDO처럼 보이지 않습니다. PDO 또는 mysql_ *을 사용하고 있습니까? – deceze

+0

MySQL에서 "SET NAMES UTF8"쿼리를 실행 해보십시오. 또한 데이터를 어떻게 표시합니까? 제대로 설 정되었을 수도 있지만 인코딩을 표시하면 표시 위치가 손상 될 수 있습니다. – ddinchev

+0

안녕하세요. 내가 mysql_에서 pdo로 전환 ... – Marc

답변

2

음, 분명히 PDO 연결을위한 연결 인코딩을 설정하지 않았습니다. 좋아해요 :

return new PDO("mysql:host=$db_host;dbname=$db_database", 
       $db_user, 
       $db_password, 
       array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8')); 

http://php.net/manual/en/ref.pdo-mysql.connection.php을 참조하십시오.

+0

대단히 고맙습니다 :) – Marc