2010-07-06 1 views
0

내부 인코딩이 cp1250_general_ci로 설정된 외부 데이터베이스에서 데이터를 가져 오는 중입니다 (편집 할 수 없으므로 제안하지 마십시오).cp1250_general_ci to UTF-8 help

데이터를 UTF-8로 표시해야하지만 제대로 작동하지 않습니다.

$dsn = 'mysql:dbname=eklient;host=127.0.0.1'; 
    $user = 'root'; 
    $password = 'root'; 

    try { 
     $dbh = new PDO($dsn, $user, $password); 
    } catch (PDOException $e) { 
     $this->view->warning = 'Connection failed: ' . $e->getMessage(); 
    } 

    $sql = 'SELECT * FROM zam z WHERE z.id_object = :id_object;'; 
    $sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY)); 
    $sth->execute(array(':id_object' => 1)); 
    $data = $sth->fetchObject(); 

원래 문자열은 다음과 같습니다 :

poznamka<br /> riadok1 ľščťžýáí 

내가이처럼 인쇄 할 때 :

:

echo iconv('Windows-1250', 'UTF-8', $data->poznamka); 

내가이 얻을 나는 데이터를 가져 오기 위해이를 사용하고 있습니다

poznamka<br /> riadok1 ?š??žýáí 

그래서 일부 문자는 다음으로 대체됩니다. 물음표. 어떤 생각이 어떻게 해결할 수 있습니까?

예 HTML에 올바른 메타 태그가 있습니다.

<?php 
$pdo = new PDO(
    'mysql:host=hostname;dbname=defaultDbName', 
    'username', 
    'password', 
    array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8") 
); 
?> 
:

이것은 연결 을 위해 UTF-8을 사용하기 위해 MySQL을 PDO 드라이버를 강제하는 방법 :

답변

2

당신이 PHP MySQL을 PDO 드라이버 infosite에서 this 코멘트 봤어
1

HTML의 메타 태그가 실제로 차이를 만들지는 않습니다. 당신은 : 당신이

<?php 
header('Content-Type: text/html; charset=utf-8'); 
+0

헤더를 확인했다 수행하여이 작업을 수행 할 수 있지만 덕분에 어쨌든 ... +1, 당신이있어 다행이 멋진 분류 –

+0

, 올바른 헤더 전송이 필요합니다 – nathan