Différence entre les pilotes ANSI et Unicode de MySQL

sur le choix de la Source de données sous ODBC (64-Bit) sur Windows, je reçois deux options disponibles de la base de données MySQL:

  • MySQL ODBC 5.3 ANSI Driver
  • MySQL ODBC 5.3 Unicode Driver

Quelle est la différence entre ces deux-là?

26
demandé sur Malwinder Singh 2014-09-17 15:13:53

2 réponses

tout d'abord, je dois dire que je n'utilise pas MySQL mais je connais les pilotes ODBC. Dans ODBC il y a différents API pour unicode et ansi. Les API ansi se terminent en A et les API unicode se terminent en W (par exemple, SQLPrepareA et SQLPrepareW). Les API ansi acceptent les octets / octets pour les chaînes de caractères et ne peuvent donc traiter que les chrs 0-255. Les API unicode acceptent les SQLWCHARs qui sont des codépoints unicode encodés UCS-2 de 2 Octets (les versions plus récentes du serveur MS SQL peuvent gérer des chaînes encodées UTF16) et peuvent donc gérer environ les 65000 premiers codépoints en unicode.

donc si vous avez besoin de stocker des données unicode vous n'avez pas le choix quel pilote utiliser.

Je ne laisserais pas les commentaires sur la vitesse de Carnangel vous rebuter en utilisant le pilote unicode et dans tous les cas ses commentaires n'incluent aucun fait. Il peut faire référence à:

si vous stockez des données unicode dans MySQL, elles seront encodées en UTF-8 et transférées sur votre réseau en UTF-8. À la fin du client le pilote ODBC aura pour convertir les données encodées UTF-8 en UCS-2 car C'est ce dont ODBC a besoin. Évidemment, l'inverse s'applique.

si vous écrivez une application ANSI ODBC (qui utilise les API ANSI ODBC) avec un pilote unicode ODBC, alors le Gestionnaire de pilotes ODBC devra convertir L'UCS-2.le pilote retourne à 8 bits (avec perte) et convertir les données de 8 bits que vous passez au pilote en UCS-2. Afin de ne pas le faire.

ces jours-ci, je serais surpris si quelqu'un utilise encore ANSI ODBC pilote.

16
répondu bohica 2014-09-18 08:49:09

comme vous le savez peut-être, Ansi et unicode sont appliqués au type de caractère de données. Vous pouvez choisir l'un ou l'autre, il n'est pas une question de processeur Voici la différence entre eux: - Unicode vous permet d'avoir toutes les propriétés des caractères activées mais en réduisant le traitement de la vitesse brute - Ansi, le contraire, moins de type de caractère mais la vitesse de traitement brute va accélérer

Si vous êtes un nouvel utilisateur de prendre l'Unicode, si non, vous pouvez choisir l'Ansi.

j'espère que vous avez le point ;)

3
répondu Carnangel 2014-09-17 11:32:10