Format de ligne de commande MySQL avec UTF8

J’ai une table de firebase database contenant des chaînes suédoises / norvégiennes.

Lorsque j’interroge certaines données, je reçois des résultats comme ceci:

Sortie avec les set names latin1;

 +-----------------------------------+ | name | +-----------------------------------+ | Kid Interi##### | | Bwg Homes | | If Skadef####kring | | Jangaard Export | | Nordisk Film | +-----------------------------------+ 

Maintenant, si je mets les set names utf8; pour voir les caractères avec leur encodage correct, alors le formatage de la sortie tabulaire de la ligne de commande MySQL est rompu.

Sortie avec les set names utf8;

 +-----------------------------------+ | name | +-----------------------------------+ | Kid Interiør | | Bwg Homes | | If Skadeförsäkring | | Jangaard Export | | Nordisk Film | +-----------------------------------+ 

Question:

Ce n’est pas un gros problème mais cela rend la sortie un peu plus difficile à lire. Quelqu’un sait-il comment conserver le formatage tabulaire intact?

Démarrer le client avec l’option --default-character-set=utf8 .

 mysql --default-character-set=utf8 

Cela force les variables character_set_client , character_set_connection et character_set_results à utf8.

Plus d’informations sur les jeux de caractères de connexion ici .

Vous pouvez le définir comme option par défaut dans votre fichier my.cnf , dans la section [mysql] à inclure automatiquement chaque fois que vous invoquez le client mysql.

 [mysql] default-character-set=utf8 

Ces mots “ø ö ä” avec utf8 prennent 2 octets, alors avez-vous oublié d’utiliser wchar ou utf ssortingng?

Voici mon code de test en python:

 s = ["Kid Interiør","Bwg Homes","If Skadeförsäkring"] for w in s: print '|',w.ljust(20,' '),'|' 

le résultat est identique à celui de votre programme. tout ce que je dois faire est de changer l’encodage de la chaîne s :

 s = [u"Kid Interiør",u"Bwg Homes",u"If Skadeförsäkring"] for w in s: print '|',w.ljust(20,' '),'|' 

le résultat est

 | Kid Interiør | | Bwg Homes | | If Skadeförsäkring | 

Je n’ai pas testé en c ++, mais je suggère que vous puissiez utiliser wchar, std :: wcout.