J'ai PHP parlant à SQLServer via ODBC en utilisant FreeTDS et unixODBC. J'ai suivi tutorials pour obtenir cette configuration. Cela fonctionne bien maintenant, bien que les caractères spéciaux dans la base de données ne s'affichent pas correctement. Plus précisément, le symbole ™. Il apparaît dans le navigateur en tant que . J'ai essayé de définir client charset = UTF-8
dans la section [global] de freetds.conf. J'ai essayé iconv('UCS-2', 'UTF-8', $str)
et mb_convert_encoding($str, 'UTF-8', 'UCS-2')
dans PHP et les deux résultent en jeux de caractères asiatiques (䐧祲圠攮戮餮吠渭捥❫
). Je suis perplexe! Quelqu'un a des conseils?Les données SQLServer en PHP perdent les caractères multi-octets
Un autre élément qui mérite d'être mentionné: Lorsque je cours ce code sur ma machine locale, je n'ai pas ces problèmes. Le ™, par exemple, se montre bien. Ma machine locale est un mac et j'utilise Actual Technologies ODBC driver. Là où j'ai des problèmes, c'est notre serveur web LAMP. Cela m'amène à croire que le problème réside dans la configuration du pilote. Ou éventuellement Linux doit être informé de l'UTF-8?
Je suppose que les colonnes de votre base de données sont des NVARCHAR. (Qui peut contenir Unicode, contrairement aux VARCHARs habituels) – SLaks
Effectivement, c'est nchar – weotch