IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Ecrire et lire des données Unicode dans MSSQL 2005


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 306
    Par défaut Ecrire et lire des données Unicode dans MSSQL 2005
    Hello,

    Je galère depuis quelques jours pour pouvoir dialoguer en Unicode avec ma base Sql Server.

    Configuration :
    PHP exécuté sur un serveur Linux avec freetds d'installé. En face, base SQL Server 2005 sur un Windows.

    Conf Freetds :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [ma_connexion_utf8]
            host = mon_hote_sql
            port = 1433
            client charset = UTF-8
            tds version = 7
    Ma page PHP est en Unicode, et je fais une requête de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $params = array(
    	'host'		=>'ma_connexion_utf8',
    	'pdoType'	=>'dblib',
    	'dbname'	=>'MA_BASE',
    	'username'	=>'mon_login',
    	'password'	=>'mon_password'			
    );
     
    $db = Zend_Db::factory('Pdo_Mssql', $params);
     
    $sql   = "INSERT INTO... VALUES ('1',N'éâtôtà','6655'...
     
    $stmt = new Zend_Db_Statement_Pdo($db, $sql);
    Mes champs sont en NVARCHAR en base.

    Quand je regarde le contenu de ma table vi SQL Server Managment Studio Express, mes données ressemblent à :
    éâtôtÃ*

    Est-ce que j'aurais oublié de paramétrer un truc ?

    Merci de votre aide.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 306
    Par défaut
    Hello,

    Je complète mon post:

    Je viens de tester la même requête mais à partir d'un poste windows cette fois-ci (avec easyphp) et je rencontre le même problème.

    Ca ne semble donc pas être le driver freetds qui soit en cause.

    Je pencherai plus sur la conf sql server mais je n'ai pas trouvé d'options de ce genre ?

    Est-ce que l'un d'entre a déjà écrit de l'unicode dans une base sql server 2000 ou 2005 (mon cas) ? Si oui avez-vous rencontré des problèmes ou c'est passé nickel?

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il faut déjà que le serveur/base/table/champ (?) soient configurés en Unicode.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 306
    Par défaut
    Merci pour ta réponse.

    A ma connaissance, au niveau SQL server 2005, la seule chose à prendre en compte pour gérer de l'unicode est le type de la colonne qui doit être du type nvarchar u nchar ou ntext et c'est ce que j'ai fait.

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Personnellement j'avais utilisé les fonction utf8_decode/encode pour communiquer avec SQL serveur mais je n'avais pas possibilité de modifier sa config.
    Il existe peut etre un moyen de le faire communiquer avec PHP directement en UTF8 mais il n'y a vraiment pas d'infos la dessus sur le net.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 306
    Par défaut
    Les string que j'envoie au server sont bien en unicode (je fais la conversion avant).

Discussions similaires

  1. [SAX] Lire des données imbriquées dans d'autres
    Par totot dans le forum Format d'échange (XML, JSON...)
    Réponses: 16
    Dernier message: 03/05/2014, 18h48
  2. Ecrire et lire des données en C
    Par Laura675 dans le forum Débuter
    Réponses: 11
    Dernier message: 02/01/2013, 17h37
  3. lire des données hexa dans un fichier
    Par neurodoxx dans le forum C++
    Réponses: 1
    Dernier message: 11/02/2011, 15h43
  4. Ecrire et lire des données d'une classe
    Par rtg57 dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 03/04/2010, 19h11
  5. Lire des données saisies dans des TEdit
    Par hayat2 dans le forum Composants VCL
    Réponses: 5
    Dernier message: 10/05/2009, 07h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo