MysqlDump от Powershell и кодировка Windows - PullRequest
9 голосов
/ 05 января 2011

Я делаю экспорт из командной строки в 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.

ОБНОВЛЕНИЕ: похоже, что это происходит только при вызове mysqldump из Powershell. Я меняю командную строку на ту, которую я использую в своем скрипте PS

1 Ответ

6 голосов
/ 06 января 2011

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

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

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

...