开发者

cp1250_general_ci to UTF-8 help

I'm fetching data from external database (I cannot edit it so don't suggest that please) which has internal encoding set to cp1250_general_ci.

I need to display that data as UTF-8 but I开发者_如何学Python cannot get it to work. I'm using this to fetch the data:

  $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();

The original string is:

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

When I print it like this:

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

I get this:

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

So some characters are getting substituted with question marks. Any idea how to solve this?

Yes I do have correct meta tags in HTML.


Have you looked at this comment from the PHP MySQL PDO driver infosite:

This is the way to force mysql PDO driver to use UTF-8 for the connection :

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


Meta tags in HTML don't really make a difference; you need to have the correct header sent, you can do this by doing

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜