Description du stockage des données UTF-8 dans SQL Server

Traductions disponibles Traductions disponibles
Numéro d'article: 232580 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Résumé

Certaines applications (notamment celles qui sont basé sur le Web) doivent utiliser les données Unicode qui sont codées avec la méthode de codage UTF-8. SQL Server 7.0 et SQL Server 2000 utilisent un autre Unicode codage (UCS-2) et ne reconnaissent pas UTF-8 comme données de caractère valide. Cet article décrit certaines options pour traiter cette situation.

Plus d'informations

Données Unicode peuvent être codées de différentes manières. UCS-2 et UTF-8 existe deux moyens courants pour stocker les modèles de bits qui représentent des caractères Unicode. Microsoft Windows NT, SQL Server, Java, COM et le pilote ODBC SQL Server et fournisseur OLEDB tout en interne représentent données Unicode comme UCS-2.

Les options d'utilisation de SQL Server 7.0 ou SQL Server 2000 en tant que serveur principal pour une application qui envoie et reçoit des données Unicode qui sont codées en tant que UTF-8 incluent :
  1. Si votre application utilise ASP (Active Server Pages) et que vous utilisez Internet Information Server (IIS) 5.0 et Microsoft Windows 2000, vous pouvez ajouter "< % Session.Codepage=65001 % >" à votre script ASP côté serveur. Cela force IIS pour convertir toutes les chaînes générées dynamiquement (exemple : Response.Write) de UCS-2 à UTF-8 automatiquement avant de les envoyer au client.

    Si vous ne souhaitez pas activer des sessions, vous pouvez également utiliser la directive côté serveur " < % @ CodePage = 65001 % > ".

    Les données UTF-8 envoyées à partir du client à serveur via GET ou POST sont converties également automatiquement en UCS-2. La propriété Session.codepage est la méthode recommandée pour traiter les données UTF-8 dans une application web. Ce paramètre de page de codes n'est pas disponible sur les services Internet (IIS) 4.0 et Windows NT 4.0. Pour plus d'informations, consultez l'article suivant dans la Base de connaissances :
    254313 Message d'erreur : Active Server Pages erreur 'ASP 0203 « code non valide.
  2. Traduire avec D'UCS-2 ou UTF-8 en fonction de l'application. Exemple de code pour ce type de conversion se trouve sur le site le Consortium Unicode :

    ftp://ftp.unicode.org/Public/PROGRAMS/CVTUTF/
    Une description détaillée de l'algorithme pour convertir UCS-2 en UTF-8 peut se trouver dans le document de demande de commentaires Internet RFC2279.

    Sur Windows NT ou Windows 2000, vous pouvez utilisez les fonctions Win32 MultiByteToWideChar et WideCharToMultiByte pour convertir UTF-8 de UCS-2 en passant la constante CP_UTF8 (65001) comme premier paramètre aux fonctions.
  3. Modifier l'application pour utiliser UCS-2 au lieu de codage UTF-8.
  4. Stocker les données réelles UTF-8 sur le serveur utilisant les colonnes BINARY/varbinary/image. Stockage des données de UTF-8 sur SQL Server signifie que vous ne pouvez pas utiliser SQL Server pour trier ou trouver des plages de ces valeurs comme si les données ont été données caractères valides. Les types d'opérations sur les colonnes contenant des données de UTF-8 pas retourne les résultats attendus comprennent « ORDER BY », plus, que " > "moins - que" < " des comparaisons et les fonctions intégrées de manipulation chaîne SQL Server comme SUBSTRING().

    Cependant, des comparaisons d'égalité, fonctionne tant que les chaînes comparées sont équivalents à un niveau octet. Notez que si vous stockez des données UTF-8 dans SQL Server vous ne devez pas utiliser colonnes caractère (CHAR/NCHAR/varchar et ainsi de suite). UTF-8 n'est pas caractère valide les données vers SQL Server et en stockant les caractères non données dans les colonnes caractère que vous risquez de rencontrer des problèmes tels que les problèmes décrits dans les articles suivants de la base de connaissances Microsoft :
    155723 Fichier INF: SQL Server troncation d'une chaîne de caractères DBCS
    234748 MODÈLE : pilote ODBC SQL Server convertit les événements de langue au format Unicode
    Si vous envisagez de cette option, n'oubliez pas que si vous souhaitez pouvoir accéder aux données UTF-8 stockées dans SQL Server de n'importe quelle application autre qu'un navigateur Web (par exemple, d'une application ODBC non Web-basé) vous devez faire une conversion de UTF-8 UCS-2 de cette application ODBC OLEDB, COM, appels D'API Win32, Visual Basic et C runtime chaîne manipulation fonctions ne fonctionnent pas avec les données UTF-8. Il déplace la tâche de traduction vers une autre application.
  5. Si vos besoins n'incluent pas la nécessité de stocker les données d'une combinaison de langages qui ne peut pas être satisfaite par une page de codes unique, vous devrez pas utiliser Unicode.
Prise en charge Unicode a été introduit dans SQL Server commençant par SQL Server 7.0. Comme SQL Server 6.5 ne prend pas en charge le stockage de données Unicode, les seules options pour SQL Server 6.5 décrites dans l'étape 4 et étape 5.

Propriétés

Numéro d'article: 232580 - Dernière mise à jour: mercredi 7 décembre 2005 - Version: 4.4
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft SQL Server 2000 Standard
  • Microsoft SQL Server 6.5 Édition Standard
  • Microsoft SQL Server 7.0 Standard
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Workgroup Edition
Mots-clés : 
kbmt kbinfo KB232580 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 232580
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com