MysqlDump из кодировки Powershell и Windows

Я делаю экспорт из командной строки на ms-dos с mysqldump:

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

моя база данных / таблицы закодированы с UTF-8, и я указываю ту же кодировку, когда я делал дамп. Но когда я открываю файл с помощью Notepad++ или Scite, я вижу кодировку UTF-16 (UCS-2). Если я не конвертирую файл с iconv в UTF-8 перед запуском импорта, я получил ошибку.

Кажется, что MS-DOS / CMD.exe перенаправляет по умолчанию с UTF-16. Могу ли я изменить это? ?

примечание: Я использую Powershell для вызова mysqldump.

UPDATE: кажется, что это происходит только при вызове mysqldump из Powershell. Я меняю командную строку на ту, которую я использую в своем PS script

1 ответов


по умолчанию PowerShell представляет текст как Unicode, и при сохранении его в файл он сохраняется как Unicode по умолчанию. Вы можете изменить формат сохранения файла с помощью вместо > оператора, например:

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

Вам также может потребоваться дать PowerShell подсказку о том, как интерпретировать текст UTF8, поступающий из утилиты дампа. этот блог показывает, как обрабатывать этот сценарий в случае, если утилита не выводит правильную спецификацию UTF8.