Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2479 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Mysql] Choix interclassement Windows

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Mysql] Choix interclassement Windows

n°1642773
nORKy
Grmmph...
Posté le 14-11-2007 à 15:00:33  profilanswer
 

Bonjour,
 
Je suis dans l'obligation de travailler sur un serveur 2003.
J'ai habituellement l'habitude de travailler sous unix (et dans ce cas, je ne poserais pas la question) mais le doute d'installe lorsque je travaille sous windows.
 
J'ai un projet qui doit utilisé une base de donnée Mysql.
Une partie de se projet sera une application C#, l'autre partie sera un webservice.
Il va y a voir un dialogue webservice (surement en PHP) vers la base donnée, webservice vers le logiciel C# et du logiciel C# vers la base de donnée.
Vu que tout ceci travaille sous windows, quel interclassement choisir pour ma base de donnée ?
Si je choisis UTF-8 est-ce que tout mes applis PHP et mon projet .NET en C# savent sans problème travaillé en UTF-8 ??
 
Merci

mood
Publicité
Posté le 14-11-2007 à 15:00:33  profilanswer
 

n°1642903
MagicBuzz
Posté le 14-11-2007 à 17:46:00  profilanswer
 

1/ Je te déconseille d'utiliser PHP pour le WebService. En effet, .NET permet d'instancier sous forme d'un objet local un WebService écrit en .NET. Avec les autres langages, je pense que tu risques de devoir patouiller un moment avant de trouver comment reproduire ce comportement.
2/ Tu n'as pas à te soucier de la représentation en mémoire du type String dans le programme .NET. T'as juste à savoir l'interfacer correctement lorsque tu communique avec un outils externe.
 
=> Via un WebService, tu auras une clause dans ton flux XML indiquant quel charset est utilisé pour transporter les données : .NET va décoder ce charset pour utiliser sa propre représentation ensuite. Idem pour la réponse, .NET va adapter sa réponse à l'encodage attendu.
 
Enfin, pour lire une chaîne dont l'encoding est connu, mais dont .NET n'est pas capable de déterminer le type automatiquement (un fichier texte par exemple), alors tu as cette solution :
 

Code :
  1. byte[] ba = new byte[] {72, 101, 108, 108, 111};
  2. string s = Encoding.ASCII.GetString(ba);
  3. Console.WriteLine(s);


 
Et sa réciproque, avec GetBytes (génère un array de bytes à partir d'un string, en utilisant l'encoding désiré)
 
Exemple simple :

Code :
  1. using System;
  2. using System.Text;
  3.  
  4. namespace TestConsole
  5. {
  6.    class Program
  7.    {
  8.        static void Main(string[] args)
  9.        {
  10.            const string MaString = "C'est bientôt les fêtes de Noël."; // Constante en Unicode
  11.  
  12.            Console.WriteLine(string.Format("Encoding utilisé : {0} ({1})", Console.OutputEncoding.EncodingName, Console.OutputEncoding.CodePage));
  13.            Console.WriteLine(MaString);
  14.            Console.WriteLine();
  15.  
  16.            byte[] MesBytes = Encoding.UTF8.GetBytes(MaString); // Convertion en array de bytes au format UTF-8
  17.            Console.WriteLine(Console.OutputEncoding.GetString(MesBytes)); // Erreur : on essaie de décoder en MS-DOS 850 les bytes codés en UTF-8
  18.            Console.WriteLine();
  19.  
  20.            Console.WriteLine(Encoding.UTF8.GetString(MesBytes)); // Relis les bytes au format UTF-8 et les envoie vers la console correctement
  21.  
  22.            Console.ReadKey(true);
  23.        }
  24.    }
  25. }


 


Encoding utilisé : Europe de l'Ouest (DOS) (850)
C'est bientôt les fêtes de Noël.
 
C'est bientôt les fêtes de Noël.
 
C'est bientôt les fêtes de Noël.


 
En gros, l'encoding des strings en mémoire est systématiquement Unicode (mais ça pourraît être n'importe quoi d'autre, tu t'en cognes).
Si tu n'utilises pas des classes capable de reconnaître l'encodage utilisé automatiquement, tu dois le faire toi-même.
La classe TextWriter et TextReader, qui sont les seules à manipuler directement des streams de type string, ont un paramètre d'encodage au même titre que Console.
Bref, t'as pas de question à te poser, ça marche tout seul.


Message édité par MagicBuzz le 14-11-2007 à 17:46:39
n°1642910
MagicBuzz
Posté le 14-11-2007 à 17:53:16  profilanswer
 

PS : Le passage de Unicode à UTF-8 et vice versa est 100% compatible. La seule différence c'est que Unicode utilise systématiquement 2 bytes pour coder un caractère. Pour cette raison, le type char n'est absolument pas synonyme de byte en .NET. Il n'existe d'ailleurs pas à ma connaissance de méthode permettant de connaître la valeur numérique d'un char.

n°1643158
nORKy
Grmmph...
Posté le 15-11-2007 à 09:17:03  profilanswer
 

Merci !!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Mysql] Choix interclassement Windows

 

Sujets relatifs
[PHP/MySQL] Calcul d'un prix en fonction d'une dimension[MYSQL] INSERT via SET
administrer un routeur cisco sous windows via une page weboutil pour passer des commandes linux sous windows
Requete MySql group by / limitsécuriser un site avec PHP, MySQL et IIS
C sous windows !Un livre pour apprendre le php mysql ?
[mysql] une requete = 2 insertions ... WTF ?!Recherche CMS "offline" (pas de php/mysql)
Plus de sujets relatifs à : [Mysql] Choix interclassement Windows


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR