Encodage des caractères problème avec PDO_ODBC
Lors de l'accès à une Base de données Microsoft SQL à partir de PHP à l'aide de PDO_ODBC avec le code suivant, j'ai un problème de codage. Lorsque outputed le texte à partir de la DB est déformé.
$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);
sortie tronquée http://image.bayimg.com/naomcaacd.jpg
C'est fait à partir d'un module Drupal. Tout en Drupal est faite pour fonctionner avec de l'UTF-8. La solution la plus propre serait de pouvoir récupérer les données à partir de la base de données en UTF-8 ou de le convertir en UTF-8 avant de sortir.
J'ai essayé sans succès
$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')
aprèsnew PDO(...)
$pdo->exec('SET CHARACTER SET utf8');
aprèsnew PDO(...)
PS: Le code est actuellement développé sous Windows, mais il a de travailler sur GNU/Linux.
OriginalL'auteur Pierre Buyle | 2010-08-12
Vous devez vous connecter pour publier un commentaire.
Lors de l'exécution sur Linux et à l'aide de la FreeTDS pilote, le jeu de caractères pour le client peut être configuré avec le
client charset
paramètre dans lefreetds.conf
fichier. Pour lefreetds.conf
fichier à utiliser lors de l'utilisation de PDO ODBC et unixODBC, il faut configurer la source de données ODBC à l'aide de ODBC-combiné de configuration. Lorsque ODBC seule configuration est utilisé pour configurer la source de données ODBC, le fichierfreetds.conf
n'est pas utilisé. Avec cela, j'ai été en mesure de récupérer et insérer des données UTF-8 à partir de/dans la MS SQL Server base de données.Être un Linux/Unix gars, j'ai été incapable de comprendre/trouver un moyen comment configurer le jeu de caractères utilisé lors de la PDO ODBC est utilisé sur Windows. Mon vague idée est que lorsqu'il est configuré au niveau du système, une source de données ODBC peut être configuré pour utiliser de base de données SQL Server de jeu de caractères ou de se convertir à l'ordinateur client charset.
OriginalL'auteur Pierre Buyle
Lors de la configuration de l'encodage des caractères en UTF-8, vous aurez également besoin d'encoder vos requêtes que UTF-8 et de décoder les résultats. Le jeu de caractères est en disant au chauffeur que vous parlez de l'utf-8 en natif. En tant que tel, vous devez les convertir en UTF8 revenir à ce que PHP comprend (ASCII ou mbstring).
Merci, n'a fonctionné parfaitement pour moi.!
OriginalL'auteur Veggivore
Vous pouvez utiliser ce code pour résoudre votre problème:
OriginalL'auteur Pacho Zuñiga
Vous pouvez utiliser ce code pour résoudre votre problème:
Première
Données Post Convertir
Et
Lire Les Données À Convertir
Chaîne SQL
OriginalL'auteur Cemil şen