내부 인코딩이 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 드라이버를 강제하는 방법 :
헤더를 확인했다 수행하여이 작업을 수행 할 수 있지만 덕분에 어쨌든 ... +1, 당신이있어 다행이 멋진 분류 –
, 올바른 헤더 전송이 필요합니다 – nathan