2011-01-04 37 views
9

tôi đang làm một xuất khẩu từ dòng lệnh trên ms-dos với mysqldump:mysqldump từ Powershell và Windows mã hóa

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

cơ sở dữ liệu của tôi/bảng được mã hóa với UTF-8 và tôi chỉ định bảng mã tương tự khi tôi đã đổ. Nhưng khi tôi mở tệp bằng Notepad ++ hoặc Scite tôi thấy mã hóa UTF-16 (UCS-2). Nếu tôi không chuyển đổi tệp có biểu tượngv thành UTF-8 trước khi chạy nhập, tôi gặp lỗi.

Dường như MS-DOS/CMD.exe đang chuyển hướng theo mặc định với UTF-16. Tôi có thể thay đổi điều này không?

Lưu ý phụ: Tôi sử dụng Powershell để gọi mysqldump.

CẬP NHẬT: có vẻ như nó chỉ xảy ra khi gọi mysqldump từ Powershell. Tôi thay đổi dòng lệnh bằng lệnh tôi sử dụng trong tập lệnh PS

+1

Tôi chưa bao giờ gặp sự cố này và tôi sử dụng cùng một cú pháp. Đây có thể là Powershell cụ thể không? Bạn có chắc chắn 100% là UTF-16 không? –

+0

Bạn đúng Tôi chỉ thực thi lệnh trên cùng một máy chủ và tệp của tôi là một tệp UTF-8. Tôi sẽ thay đổi câu hỏi. Cám ơn! – MatthieuGD

+0

Ở đây có vẻ là một cách giải quyết (tìm kiếm "UTF-16"): http://xahlee.org/powershell/PowerShell_for_unixer.html –

Trả lời

6

Theo mặc định PowerShell đại diện cho văn bản là Unicode và khi bạn lưu nó vào một tệp mà nó lưu dưới dạng Unicode theo mặc định. Bạn có thể thay đổi các tập tin định dạng tiết kiệm bằng cách sử dụng cmdlet Out-File thay vì > điều hành ví dụ .:

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

Bạn cũng có thể cần phải cung cấp cho PowerShell một gợi ý về cách để giải thích các văn bản UTF8 đến từ utiltiy dump. This blog post cho biết cách xử lý tình huống này trong trường hợp tiện ích không xuất ra đúng UTF8 BOM.

Các vấn đề liên quan