PDO_ODBC ile Karakter kodlama sorunu

0 Cevap php

Aşağıdaki kod ile PDO_ODBC eklentisini kullanarak PHP bir Microsoft SQL veritabanı erişirken, ben bir kodlama sorunu var. Outputed zaman DB'den metin bozuluyor.

$dsn = "odbc:DRIVER={SQL Server};SERVER=$hostname;DATABASE=$database;charset=UTF-8";
$pdo = new PDO($dsn,$username,$password);
$sql = "SELECT text FROM atable";
$result = $PDO->query($sql);
while($data = $result->fetchObject()){
  $values[] = $data->text; 
}
dpm($values);

garbled çıktısı

Bu, Drupal modülünden yapılır. Drupal her şey UTF-8 ile çalışmak için yapılır. Temiz çözüm UTF-8 veritabanından veri almak için veya çıktısı önce UTF-8 dönüştürmek mümkün olacaktır.

Ben herhangi bir başarı olmadan bu çalıştı

  • $dsn = "odbc:DRIVER={SQL Server};SERVER=$hostname;DATABASE=$database;client_charset=utf-8"
  • $dsn = "odbc:DRIVER={SQL Server};SERVER=$hostname;DATABASE=$database;charset=utf-8"
  • $pdo->exec('SET NAMES utf8') sonra, new PDO(...)
  • $pdo->exec('SET CHARACTER SET utf8'); sonra, new PDO(...)

PS: Kod şu anda Windows üzerinde gelişmiştir ama çok GNU / Linux üzerinde çalışmak zorundadır.

0 Cevap