2011-01-04 12 views
9

que estoy haciendo una exportación de línea de comandos en MS-DOS con mysqldump:Mysqldump de Powershell y Windows codificación

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

mi base de datos/tablas están codificados con UTF-8 y que especifican la misma codificación cuando hizo el tugurio Pero cuando abro el archivo con Notepad ++ o Scite veo una codificación de UTF-16 (UCS-2). Si no convierto el archivo con iconv a UTF-8 antes de ejecutar la importación, recibí un error.

Parece que MS-DOS/CMD.exe está redirigiendo por defecto con UTF-16. ¿Puedo cambiar esto?

Una nota al margen: yo uso Powershell para llamar a mysqldump.

ACTUALIZACIÓN: parece que solo se produce al invocar mysqldump desde Powershell. Cambio la línea de comando con la que uso en mi script PS

+1

Nunca he encontrado este problema, y ​​uso la misma sintaxis. ¿Podría ser esto específico de Powershell? ¿Estás 100% seguro de que es UTF-16? –

+0

Tiene razón. Simplemente ejecuto el comando en el mismo servidor y mi archivo es UTF-8. hum voy a cambiar la pregunta. ¡Gracias! – MatthieuGD

+0

Aquí parece haber una solución (busque "UTF-16"): http://xahlee.org/powershell/PowerShell_for_unixer.html –

Respuesta

6

De manera predeterminada, PowerShell representa el texto como Unicode y cuando lo guarda en un archivo se guarda como Unicode de forma predeterminada. Puede cambiar el archivo de formato de almacenamiento con el cmdlet Out-File en lugar del operador > ej .:

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

También puede ser necesario para dar PowerShell una pista sobre cómo interpretar el texto UTF-8 procedente de la utiltiy volcado. This blog post muestra cómo manejar este escenario en el caso de que la utilidad no genere una lista de materiales UTF8 adecuada.

Cuestiones relacionadas