2011-01-04 3 views
9

sto facendo un export da linea di comando in MS-DOS con mysqldump:mysqldump dalla codifica PowerShell e Windows

& mysqldump -u root -p --default-character-set=utf8 -W -B dbname 
> C:\mysql_backup.sql 

mio database/tabelle sono codificati con UTF-8 e Mi specificano la stessa codifica quando ho ha fatto la discarica. Ma quando apro il file con Notepad ++ o Scite vedo una codifica di UTF-16 (UCS-2). Se non converto il file con iconv in UTF-8 prima di eseguire l'importazione, ho ricevuto un errore.

Sembra che MS-DOS/CMD.exe stia reindirizzando per impostazione predefinita con UTF-16. Posso cambiare questo?

Una nota a margine: utilizzo Powershell per chiamare mysqldump.

AGGIORNAMENTO: sembra che si verifichi solo quando si chiama mysqldump da PowerShell. Cambio riga di comando con quello che uso nel mio script PS

+1

Non ho mai riscontrato questo problema e utilizzo la stessa sintassi. Potrebbe essere Powershell specifico? Sei sicuro al 100% che sia UTF-16? –

+0

Hai ragione, eseguo il comando sullo stesso server e il mio file è UTF-8. ciao cambierò la domanda. Grazie! – MatthieuGD

+0

Qui sembra essere una soluzione alternativa (cercare "UTF-16"): http://xahlee.org/powershell/PowerShell_for_unixer.html –

risposta

6

Per impostazione predefinita, PowerShell rappresenta il testo come Unicode e quando lo si salva in un file viene salvato come Unicode per impostazione predefinita. È possibile modificare il file di formato di salvataggio utilizzando il cmdlet Out-File anziché l'operatore > es .:

... | Out-File C:\mysql_backup.sql -Encoding UTF8 

Potrebbe anche essere necessario per dare PowerShell un suggerimento su come interpretare il testo UTF8 proveniente dal utiltiy discarica. This blog post mostra come gestire questo scenario nel caso in cui l'utilità non stia emettendo un BOM UTF8 appropriato.