web-dev-qa-db-fra.com

Convertir la sortie d'une requête MySQL en utf8

J'ai une table dans ma base de données et je veux lancer une requête comme

SELECT column1, column2 FROM my_table WHERE my_condition;

mais je veux que le mysql retourne le column2 en encodage utf8. Est-ce une fonction dans mysql de faire une telle tâche? Qu'est-ce que c'est?

32
orezvani

Vous pouvez utiliser CAST et CONVERT pour basculer entre différents types d’encodages. Voir: http://dev.mysql.com/doc/refman/5.0/en/charset-convert.html

SELECT column1, CONVERT(column2 USING utf8)
FROM my_table 
WHERE my_condition;
48
josh-fuggle
SELECT CONVERT(CAST(column as BINARY) USING utf8) as column FROM table 
25

Une addition:

Lorsque vous utilisez la bibliothèque cliente MySQL , vous devez alors empêcher toute conversion en arrière vers votre jeu de caractères par défaut. (voir mysql_set_character_set()[1] )

Dans ce cas, utilisez une conversion supplémentaire en binaire:

SELECT column1, CAST(CONVERT(column2 USING utf8) AS binary)
FROM my_table
WHERE my_condition;

Sinon, l'instruction SELECT est convertie en utf-8, mais votre bibliothèque client la reconvertit en un jeu de caractères de connexion par défaut (potentiellement différent).

10
ManuelAtWork