Formattazione della riga di comando MySQL con UTF8

Ho una tabella di database che contiene stringhe svedesi / norvegesi.

Quando interrogo alcuni dati, ottengo l’output in questo modo:

Uscita con set names latin1;

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

Ora se set names utf8; per vedere i personaggi con la loro corretta codifica, allora la formattazione dell’output tabulare della riga di comando di MySQL si interrompe.

Uscita con set names utf8;

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

Domanda:

Questo non è un grosso problema, ma rende l’output un po ‘più difficile da leggere. Qualcuno sa come mantenere intatta la formattazione tabellare?

Avvia il client con l’opzione --default-character-set=utf8 .

 mysql --default-character-set=utf8 

Ciò impone le variabili character_set_client , character_set_connection e character_set_results a utf8.

Maggiori informazioni sui set di caratteri di connessione qui .

Puoi impostarlo come opzione predefinita nel tuo file my.cnf , nella sezione [mysql] per essere incluso automaticamente ogni volta che invochi il client mysql.

 [mysql] default-character-set=utf8 

Queste parole “ø ö ä” con utf8 richiedono 2 byte, quindi hai dimenticato di usare wchar o la stringa utf?

Ecco il mio codice di prova in python:

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

il risultato è lo stesso del tuo programma stampato. tutto quello che devo fare è cambiare la codifica della stringa s :

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

il risultato è

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

Non ho provato in c ++, ma suggerisco di poter usare wchar, std :: wcout.