J'ai une base de données MySQL avec un Lors de l'exécution d'une requête simple telle que the J'ai regardé dans la définition de la variable Edit: afin de reproduire le problème et de la visualiser (comme je me rendais compte que je l'ai peut-être expliqué mal) Il suffit d'aller dans SQLDEveloper et de vous connecter à une base de données MySQL et d'exécuter la requête Edit2: Clarifications. P>
Edit3: Comme indiqué par le commentaire laissé par @Tenhouse, il apparaît que cela peut être un bug. P>
EDIT4: Comme indiqué ci-dessous en tant que commentaire, la requête ci-dessus EDIT5: S'il vous plaît, n'hésitez pas à corriger le titre et / ou les tags si vous sentez que quelque chose peut être amélioré car il n'y a toujours pas de réponse au problème. P>
EDIT6: À présent, puis-je supposer que c'est vraiment un bug? Quelqu'un pourrait-il me conseiller où le signaler exactement - est-ce un bogue JConnector ou SQLDEveloper. Je pense que je dois le signaler en tant que bogue SQLDEveloper, mais je préférerais avoir une confirmation avant de perdre leur temps. P>
Edit7: J'ai essayé de clarifier encore plus loin dans mes espoirs d'une réponse. P>
utf8 code> de toutes les tables.
J'utilise SQLDEveloper pour accéder à la base de données avec le dernier pilote JConnector JDBC. p>
Sélectionnez 'Варна'; Code> équivalent à
Sélectionnez 'Варна' de Dual; Code>, qui contient une langue bulgare, SQLDeveloper retourne
' ????? ' code>. Ceci fait des éléments de la base de données dans lesquels j'ai utilisé le retour de la langue bulgare
null code>, car leur
où code> clauses (contenant de la langue bulgare) Mismatch the
uft8 code> bulgare caractères de la base de données. (Lorsque le Select n'utilise pas la langue bulgare sur tout SQLDEveloper retourne des valeurs complètement correctes et affiche la langue bulgare renvoyée à la suite de la requête correctement.) P>
Préférences -> Environnement -> Encodage Code> dans SQLDEveloper est défini sur
UTF-8 CODE>, mais j'ai essayé pratiquement tous les codages applicables énumérés là-bas et même le plus simple Query
Sélectionnez 'Варна' à partir dual; code> ne renvoie toujours pas la valeur correcte
Варна code>. P>
nls_lang code>, pensant que cela peut être la cause mais en vain. (Peut-être que c'est la clé après tout, mais je ne suis pas en mesure de le configurer correctement). P>
Sélectionnez 'Варна' de Dual; < / code>. p>
Sélectionnez 'Варна' à partir de Dual; Code> fonctionne parfaitement bien sans aucune modification et / ou réglage Fiding sur MySQL Workbench. P>
utf8 code> dB là-bas, interrogeant via SQLDEveloper fonctionne comme étant censé,
Sélectionnez 'Варна' de Dual; Code> Retourne effectivement
Варна code>. Est-ce que quelqu'un pourrait s'il vous plaît confirmer cela? P>
4 Réponses :
Vous pouvez essayer une commande comme ceci :: Alter le jeu de caractères de base de données WE8ISO8859P5; P>
Veuillez redémarrer la base de données après avoir changé de personnage. p>
Plus de détails Référez ce lien où il explique le codage requis pour différentes langues p>
http: //www.csee. UMBC.EDU/PORTAL/HELP/ORACLE8/SERVER.815/A67789/CH3.HTM P>
alter Set de la base de données Alter WE8ISO8859P5; CODE> RAPPORTS RAPPORT D'ERREUR: Erreur SQL: Ensemble de caractères inconnu: 'we8iso8859p5' code>. Veuillez noter que la base de données n'est pas une base de données Oracle, mais une base de données MySQL.
Pouvez-vous essayer celui-ci :: modifier la base de données dbname Set de caractère CP1251 Collate CP1251_bulgarian_ci La requête fonctionne bien dans MySQL Workbench l'avez-vous essayé là-bas ??
Je l'ai essayé, toujours en vain. J'ai spécifiquement copié une table dans une nouvelle base de données et avons modifié le charert comme vous l'avez montré ci-dessus afin de le faire. La requête fonctionne définitivement sur MySQL Workbench, mais j'ai un problème là-bas avec un curseur de la souris qui va devenir fou. Je ne peux donc pas l'utiliser correctement pour faire mon travail.
Donc, je ne le savais pas moi-même jusqu'à ce que ce problème soit de quelques mois, mais MySQL offre en réalité la capacité de codages différents pour les clients, les bases de données et les connexions. MySQL convertira (ou rassemblera) les demandes / réponses de / à un client à différents codages comme spécifié par le client ou dans son fichier de configuration. Donc, même si la base de données stocke des éléments tels que UTF8, si le client est défini sur Latin1, vous allez voir latine1 comme codage de votre résultat. Le moyen le plus simple de vérifier que cela consiste à tourner une connexion à MySQL et à exécuter la requête suivante: Vous devez voir un tas de codages entiers pour différentes connexions / sources. De votre description, j'imagine que la plupart d'entre elles seront pas em> utf8. Voici Doc de MySQL sur ce que chacun de ces identiques. Vous pouvez tester si cela en fait le problème en faisant un nom Un résumé de ce que chacun de ces gars (puisque les documents laissent des affaires): p> la plupart de ces gars peuvent être spécifiés en modifiant votre my.cnf et en collant vos valeurs par défaut. P> Je ne sais pas comment JConnector fonctionne, mais j'imagine qu'il utilise MySQL C API, auquel cas vous aurez besoin de faire quelque chose comme ce qui suit quelque part dans le code. Peut-être que JConnector a un moyen pour vous de le préparer à travers lui. Je ne suis pas sûr, mais voici la syntaxe de l'API mysql: p> EDIT: strong> pour mysql 5.5 p> p> p>
Après que vous vous connectiez avec un mysql_connect: Vous faites cette requête: p> maintenant, cela définira le codage pour ce qui est retourné, que se passe-t-il sur le serveur - donc tout cela a le même codage. p> Dans votre requête suivante, vous spécifiez cette connexion à utiliser p> p> p>
Exporter
Ajouter Importation p> p> P> P> [? Caractencoding = utf8] code> p>
Je ne comprends pas le problème; Je n'utilise pas non plus SQLDEveloper, mais le Workbench MySQL . Si je crée une table avec Charset UTF-8 et insérez des lettres cyrilliques ou mandarines, je peux les sélectionner via une clause WHERE sans aucun problème. Ma connexion a également utilisé UTF-8. Qu'est-ce que "qui contient la langue bulgare (Windows-1251)" signifie? Vous stockez des données Windows-1251 à l'intérieur des tables UTF-8? Cela causerait n'importe quel personnage ...
Lorsque vous utilisez MySQL Workbench, tout semble fonctionner complètement bien. Le DB est UTF8, les données de la DB sont UTF8, les requêtes sont UTF8, tout est génial. Maintenant, lorsque vous utilisez SQLDEveloper, cependant, le DB est UTF8, les données de l'utilisateur sont UTF8, les requêtes que je ne sais pas et ne savez pas comment le réparer, je soupçonne que SQLDEveloper utilise automatiquement un certain codage pour encoder ses requêtes et comme ce n'est probablement pas utf8, cela fait un tel problème
FYI: Je viens de tester le tout avec UTF8 DB, MySQ-Connector 5.1.22, Oracle SQL Developer 3.1.07 et j'ai les mêmes résultats que vous. Peut-être que c'est un bug.
J'utilise la version 3.2.20.09 Oracle SQL Developer, donc je suppose que c'est soit un bogue, soit peut-être qu'il n'y a aucun de nous ne sait comment configurer pour obtenir des résultats corrects.